/* Generated by Cython 3.0.11 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "depends": [],
        "extra_compile_args": [
            "-std=c++11"
        ],
        "extra_link_args": [
            "-Wl,-rpath,/home/runner/work/PyGCGOpt/PyGCGOpt/lib"
        ],
        "include_dirs": [
            "/usr/include/gcg",
            "/home/runner/work/PyGCGOpt/PyGCGOpt/src"
        ],
        "language": "c++",
        "libraries": [
            "scip",
            "gcg"
        ],
        "library_dirs": [
            "/home/runner/work/PyGCGOpt/PyGCGOpt/lib"
        ],
        "name": "pygcgopt.gcg",
        "sources": [
            "src/pygcgopt/gcg.pyx"
        ]
    },
    "module_name": "pygcgopt.gcg"
}
END: Cython Metadata */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
#if defined(CYTHON_LIMITED_API) && 0
  #ifndef Py_LIMITED_API
    #if CYTHON_LIMITED_API+0 > 0x03030000
      #define Py_LIMITED_API CYTHON_LIMITED_API
    #else
      #define Py_LIMITED_API 0x03030000
    #endif
  #endif
#endif

#include "Python.h"

    #if PY_MAJOR_VERSION >= 3
      #define __Pyx_PyFloat_FromString(obj)  PyFloat_FromString(obj)
    #else
      #define __Pyx_PyFloat_FromString(obj)  PyFloat_FromString(obj, NULL)
    #endif
    

    #if PY_MAJOR_VERSION <= 2
    #define PyDict_GetItemWithError _PyDict_GetItemWithError
    #endif
    

    #if (PY_VERSION_HEX < 0x030700b1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030600)) && !defined(PyContextVar_Get)
    #define PyContextVar_Get(var, d, v)         ((d) ?             ((void)(var), Py_INCREF(d), (v)[0] = (d), 0) :             ((v)[0] = NULL, 0)         )
    #endif
    
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.7+ or Python 3.3+.
#else
#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
#else
#define __PYX_EXTRA_ABI_MODULE_NAME ""
#endif
#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
#define CYTHON_HEX_VERSION 0x03000BF0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(_WIN32) && !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
  #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
#if defined(GRAALVM_PYTHON)
  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
     The existence of this section does not imply that anything works or is even tested */
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 1
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 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_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 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
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(PYPY_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #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_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #if PY_VERSION_HEX < 0x03090000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(CYTHON_LIMITED_API)
  #ifdef Py_LIMITED_API
    #undef __PYX_LIMITED_VERSION_HEX
    #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
  #endif
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 1
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_CLINE_IN_TRACEBACK
  #define CYTHON_CLINE_IN_TRACEBACK 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 1
  #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
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #endif
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #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_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 1
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #ifndef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #endif
  #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
  #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_GIL
  #define CYTHON_FAST_GIL 0
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 0
  #endif
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #ifndef 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
  #ifndef 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_GIL
    #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #if PY_VERSION_HEX < 0x030400a1
    #undef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #elif !defined(CYTHON_USE_TP_FINALIZE)
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #if PY_VERSION_HEX < 0x030600B1
    #undef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS 0
  #elif !defined(CYTHON_USE_DICT_VERSIONS)
    #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5)
  #endif
  #if PY_VERSION_HEX < 0x030700A3
    #undef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK 0
  #elif !defined(CYTHON_USE_EXC_INFO_STACK)
    #define CYTHON_USE_EXC_INFO_STACK 1
  #endif
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 1
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if !defined(CYTHON_VECTORCALL)
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
#endif
#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#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(__cplusplus)
    /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(maybe_unused)
        #define CYTHON_UNUSED [[maybe_unused]]
      #endif
    #endif
  #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_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_USE_CPP_STD_MOVE
  #if defined(__cplusplus) && (\
    __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
    #define CYTHON_USE_CPP_STD_MOVE 1
  #else
    #define CYTHON_USE_CPP_STD_MOVE 0
  #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 short    uint16_t;
            typedef unsigned int      uint32_t;
        #else
            typedef unsigned __int8   uint8_t;
            typedef unsigned __int16  uint16_t;
            typedef unsigned __int32  uint32_t;
        #endif
    #endif
    #if _MSC_VER < 1300
        #ifdef _WIN64
            typedef unsigned long long  __pyx_uintptr_t;
        #else
            typedef unsigned int        __pyx_uintptr_t;
        #endif
    #else
        #ifdef _WIN64
            typedef unsigned __int64    __pyx_uintptr_t;
        #else
            typedef unsigned __int32    __pyx_uintptr_t;
        #endif
    #endif
#else
    #include <stdint.h>
    typedef uintptr_t  __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(fallthrough)
        #define CYTHON_FALLTHROUGH [[fallthrough]]
      #endif
    #endif
    #ifndef CYTHON_FALLTHROUGH
      #if __has_cpp_attribute(clang::fallthrough)
        #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
      #elif __has_cpp_attribute(gnu::fallthrough)
        #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
      #endif
    #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
#ifdef __cplusplus
  template <typename T>
  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
#else
  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
#endif
#if CYTHON_COMPILING_IN_PYPY == 1
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

#ifndef __cplusplus
  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
#endif
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #else
    #define CYTHON_INLINE inline
  #endif
#endif
template<typename T>
void __Pyx_call_destructor(T& x) {
    x.~T();
}
template<typename T>
class __Pyx_FakeReference {
  public:
    __Pyx_FakeReference() : ptr(NULL) { }
    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
    T *operator->() { return ptr; }
    T *operator&() { return ptr; }
    operator T&() { return *ptr; }
    template<typename U> bool operator ==(const U& other) const { return *ptr == other; }
    template<typename U> bool operator !=(const U& other) const { return *ptr != other; }
    template<typename U> bool operator==(const __Pyx_FakeReference<U>& other) const { return *ptr == *other.ptr; }
    template<typename U> bool operator!=(const __Pyx_FakeReference<U>& other) const { return *ptr != *other.ptr; }
  private:
    T *ptr;
};

#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_DefaultClassType PyClass_Type
  #define __Pyx_PyCode_New(a, p, 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)
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_DefaultClassType PyType_Type
#if CYTHON_COMPILING_IN_LIMITED_API
    static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, 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 *exception_table = NULL;
        PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
        #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
        PyObject *version_info;
        PyObject *py_minor_version = NULL;
        #endif
        long minor_version = 0;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
        minor_version = 11;
        #else
        if (!(version_info = PySys_GetObject("version_info"))) goto end;
        if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
        minor_version = PyLong_AsLong(py_minor_version);
        Py_DECREF(py_minor_version);
        if (minor_version == -1 && PyErr_Occurred()) goto end;
        #endif
        if (!(types_module = PyImport_ImportModule("types"))) goto end;
        if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
        if (minor_version <= 7) {
            (void)p;
            result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else if (minor_version <= 10) {
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else {
            if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
        }
    end:
        Py_XDECREF(code_type);
        Py_XDECREF(exception_table);
        Py_XDECREF(types_module);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
    #ifndef CO_OPTIMIZED
    #define CO_OPTIMIZED 0x0001
    #endif
    #ifndef CO_NEWLOCALS
    #define CO_NEWLOCALS 0x0002
    #endif
    #ifndef CO_VARARGS
    #define CO_VARARGS 0x0004
    #endif
    #ifndef CO_VARKEYWORDS
    #define CO_VARKEYWORDS 0x0008
    #endif
    #ifndef CO_ASYNC_GENERATOR
    #define CO_ASYNC_GENERATOR 0x0200
    #endif
    #ifndef CO_GENERATOR
    #define CO_GENERATOR 0x0020
    #endif
    #ifndef CO_COROUTINE
    #define CO_COROUTINE 0x0080
    #endif
#elif PY_VERSION_HEX >= 0x030B0000
  static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, 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) {
    PyCodeObject *result;
    PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
    if (!empty_bytes) return NULL;
    result =
      #if PY_VERSION_HEX >= 0x030C0000
        PyUnstable_Code_NewWithPosOnlyArgs
      #else
        PyCode_NewWithPosOnlyArgs
      #endif
        (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
    Py_DECREF(empty_bytes);
    return result;
  }
#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_PyCode_New(a, p, 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
#endif
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
  #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
#else
  #define __Pyx_Py_Is(x, y) ((x) == (y))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
#else
  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
#else
  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
#else
  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
#endif
#define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
#else
  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
#endif
#ifndef CO_COROUTINE
  #define CO_COROUTINE 0x80
#endif
#ifndef CO_ASYNC_GENERATOR
  #define CO_ASYNC_GENERATOR 0x200
#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 Py_TPFLAGS_SEQUENCE
  #define Py_TPFLAGS_SEQUENCE 0
#endif
#ifndef Py_TPFLAGS_MAPPING
  #define Py_TPFLAGS_MAPPING 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
  #if PY_VERSION_HEX >= 0x030d00A4
  #  define __Pyx_PyCFunctionFast PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
  #else
  #  define __Pyx_PyCFunctionFast _PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
  #endif
#endif
#if CYTHON_METH_FASTCALL
  #define __Pyx_METH_FASTCALL METH_FASTCALL
  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
#else
  #define __Pyx_METH_FASTCALL METH_VARARGS
  #define __Pyx_PyCFunction_FastCall PyCFunction
  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
#endif
#if CYTHON_VECTORCALL
  #define __pyx_vectorcallfunc vectorcallfunc
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
  #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
#elif CYTHON_BACKPORT_VECTORCALL
  typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
                                            size_t nargsf, PyObject *kwnames);
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  ((size_t)1 << (8 * sizeof(size_t) - 1))
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_MAJOR_VERSION >= 0x030900B1
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
#else
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
#endif
#define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
#elif !CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
    return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
}
#endif
static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
#else
    return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
}
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
#if __PYX_LIMITED_VERSION_HEX < 0x030900B1
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
  #define __Pyx_PyCMethod  PyCMethod
#endif
#ifndef METH_METHOD
  #define METH_METHOD 0x200
#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_LIMITED_API
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_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_COMPILING_IN_LIMITED_API
  #define __Pyx_PyThreadState_Current PyThreadState_Get()
#elif !CYTHON_FAST_THREAD_STATE
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#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 CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
{
    void *result;
    result = PyModule_GetState(op);
    if (!result)
        Py_FatalError("Couldn't find the module state");
    return result;
}
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
#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 PY_MAJOR_VERSION < 3
    #if CYTHON_COMPILING_IN_PYPY
        #if PYPY_VERSION_NUM < 0x07030600
            #if defined(__cplusplus) && __cplusplus >= 201402L
                [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
            #elif defined(__GNUC__) || defined(__clang__)
                __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
            #elif defined(_MSC_VER)
                __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
            #endif
            static CYTHON_INLINE int PyGILState_Check(void) {
                return 0;
            }
        #else  // PYPY_VERSION_NUM < 0x07030600
        #endif  // PYPY_VERSION_NUM < 0x07030600
    #else
        static CYTHON_INLINE int PyGILState_Check(void) {
            PyThreadState * tstate = _PyThreadState_Current;
            return tstate && (tstate == PyGILState_GetThisThreadState());
        }
    #endif
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || 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 > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
    PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
    if (res == NULL) PyErr_Clear();
    return res;
}
#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
#define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#else
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
#if CYTHON_COMPILING_IN_PYPY
    return PyDict_GetItem(dict, name);
#else
    PyDictEntry *ep;
    PyDictObject *mp = (PyDictObject*) dict;
    long hash = ((PyStringObject *) name)->ob_shash;
    assert(hash != -1);
    ep = (mp->ma_lookup)(mp, name, hash);
    if (ep == NULL) {
        return NULL;
    }
    return ep->me_value;
#endif
}
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#endif
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
  #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  (Py_TYPE(obj)->tp_iternext)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  PyIter_Next
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
#else
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
#endif
#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE((PyObject*)obj);\
    assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
    PyObject_GC_Del(obj);\
    Py_DECREF(type);\
}
#else
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GetLength(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_READY(op)       (0)
  #else
    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                                0 : _PyUnicode_Ready((PyObject *)(op)))
  #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)         ((int)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, (Py_UCS4) ch)
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #else
    #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
  #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) ? 65535U : 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((int)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] = (Py_UNICODE) 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
  #if !defined(PyUnicode_DecodeUnicodeEscape)
    #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
  #endif
  #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
    #undef PyUnicode_Contains
    #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
  #endif
  #if !defined(PyByteArray_Check)
    #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
  #endif
  #if !defined(PyObject_Format)
    #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
  #endif
#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
#if CYTHON_COMPILING_IN_CPYTHON
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#else
  #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        __Pyx_IS_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_ITEM(o, i) PySequence_ITEM(o, i)
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
#else
  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#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 __Pyx_Py3Int_Check(op)       PyLong_Check(op)
  #define __Pyx_Py3Int_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
#else
  #define __Pyx_Py3Int_Check(op)       (PyLong_Check(op) || PyInt_Check(op))
  #define __Pyx_Py3Int_CheckExact(op)  (PyLong_CheckExact(op) || PyInt_CheckExact(op))
#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 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(WIN32) || defined(MS_WINDOWS)
  #if !defined(_USE_MATH_DEFINES)
    #define _USE_MATH_DEFINES
  #endif
#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; }

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
    #define __PYX_EXTERN_C extern "C++"
#endif

#define __PYX_HAVE__pygcgopt__gcg
#define __PYX_HAVE_API__pygcgopt__gcg
/* Early includes */
#include "scip/type_retcode.h"
#include "scip/type_var.h"
#include "scip/type_prob.h"
#include "lpi/type_lpi.h"
#include "scip/type_lp.h"
#include "scip/type_result.h"
#include "scip/type_stat.h"
#include "scip/type_set.h"
#include "scip/type_tree.h"
#include "scip/type_paramset.h"
#include "scip/type_timing.h"
#include "scip/type_expr.h"
#include "scip/type_event.h"
#include "scip/type_benders.h"
#include "scip/type_history.h"
#include "scip/scip.h"
#include "scip/tree.h"
#include "scip/scipdefplugins.h"
#include "scip/bendersdefcuts.h"
#include "scip/cons_linear.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.h"
#include "scip/cons_disjunction.h"
#include "scip/cons_and.h"
#include "scip/cons_or.h"
#include "scip/cons_xor.h"
#include "scip/scip_cons.h"
#include "blockmemshell/memory.h"
#include "scip/scip_expr.h"
#include "scip/pub_expr.h"
#include "scip/expr_var.h"
#include "scip/expr_varidx.h"
#include "scip/expr_value.h"
#include "scip/expr_sum.h"
#include "scip/expr_abs.h"
#include "scip/expr_exp.h"
#include "scip/expr_log.h"
#include "scip/expr_trig.h"
#include "scip/expr_product.h"
#include "scip/expr_pow.h"
#include "scip/pub_nlp.h"
#include "scip/scip_nlp.h"
#include "scip/cons_cardinality.h"
#include "scip/cons_indicator.h"
#include "scip/cons_countsols.h"
#include "scip/paramset.h"
#include "scip/pub_lp.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include "tpi/tpi.h"
#include "ios"
#include "new"
#include "stdexcept"
#include "typeinfo"
#include <vector>
#include <string.h>
#include <string>
#include <utility>

    #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
    // move should be defined for these versions of MSVC, but __cplusplus isn't set usefully
    #include <type_traits>

    namespace cython_std {
    template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
    template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
    }

    #endif
    
#include "limits.h"
#include "gcg/gcg.h"
#include "gcg/pub_gcgsepa.h"
#include "gcg/gcgplugins.h"
#include "gcg/pricer_gcg.h"
#include "gcg/pub_solver.h"
#include "gcg/pub_gcgcol.h"
#include "gcg/cons_decomp.h"
#include "gcg/cons_decomp.hpp"
#include "gcg/class_partialdecomp.h"
#include "gcg/class_detprobdata.h"
#include "gcg/class_conspartition.h"
#include "gcg/class_varpartition.h"
#include <stdio.h>
#include <stddef.h>
#include "pythread.h"
#include <stdlib.h>
#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 Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#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_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __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)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#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
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_VERSION_HEX >= 0x030C00A7
  #ifndef _PyLong_SIGN_MASK
    #define _PyLong_SIGN_MASK 3
  #endif
  #ifndef _PyLong_NON_SIZE_BITS
    #define _PyLong_NON_SIZE_BITS 3
  #endif
  #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
  #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
  #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
  #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
  #define __Pyx_PyLong_SignedDigitCount(x)\
        ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
  #else
    #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
  #endif
  typedef Py_ssize_t  __Pyx_compact_pylong;
  typedef size_t  __Pyx_compact_upylong;
  #else
  #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
  #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
  #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
  #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
  #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
  #define __Pyx_PyLong_CompactValue(x)\
        ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
  typedef sdigit  __Pyx_compact_pylong;
  typedef digit  __Pyx_compact_upylong;
  #endif
  #if PY_VERSION_HEX >= 0x030C00A5
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
  #else
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
  #endif
#endif
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
#include <string.h>
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] = (char) 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
#include <string.h>
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; }

#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;

/* #### Code section: filename_table ### */

static const char *__pyx_f[] = {
  "src/pygcgopt/detector.pxi",
  "src/pygcgopt/partition.pxi",
  "src/pygcgopt/decomposition.pxi",
  "src/pygcgopt/consclassifier.pxi",
  "src/pygcgopt/gcg.pyx",
  "<stringsource>",
  "contextvars.pxd",
  "src/pygcgopt/pricing_solver.pxi",
  "src/pygcgopt/score.pxi",
  "src/pygcgopt/detprobdata.pxi",
  "src/pygcgopt/varclassifier.pxi",
  "scip.pxd",
  "type.pxd",
  "bool.pxd",
  "complex.pxd",
};
/* #### Code section: utility_code_proto_before_types ### */
/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* NoFastGil.proto */
#define __Pyx_PyGILState_Ensure PyGILState_Ensure
#define __Pyx_PyGILState_Release PyGILState_Release
#define __Pyx_FastGIL_Remember()
#define __Pyx_FastGIL_Forget()
#define __Pyx_FastGilFuncInit()

/* #### Code section: numeric_typedefs ### */
/* #### Code section: complex_type_declarations ### */
/* #### Code section: type_declarations ### */

/*--- Type declarations ---*/
struct __pyx_obj_9pyscipopt_4scip_Expr;
struct __pyx_obj_9pyscipopt_4scip_Event;
struct __pyx_obj_9pyscipopt_4scip_Column;
struct __pyx_obj_9pyscipopt_4scip_Row;
struct __pyx_obj_9pyscipopt_4scip_NLRow;
struct __pyx_obj_9pyscipopt_4scip_Solution;
struct __pyx_obj_9pyscipopt_4scip_DomainChanges;
struct __pyx_obj_9pyscipopt_4scip_BoundChange;
struct __pyx_obj_9pyscipopt_4scip_Node;
struct __pyx_obj_9pyscipopt_4scip_Variable;
struct __pyx_obj_9pyscipopt_4scip_Constraint;
struct __pyx_obj_9pyscipopt_4scip_Model;
struct __pyx_obj_8pygcgopt_3gcg_DetProbData;
struct __pyx_obj_8pygcgopt_3gcg_ConsPart;
struct __pyx_obj_8pygcgopt_3gcg_VarPart;
struct __pyx_obj_8pygcgopt_3gcg_GCGColumn;
struct __pyx_obj_8pygcgopt_3gcg_Detector;
struct __pyx_obj_8pygcgopt_3gcg_PricingSolver;
struct __pyx_obj_8pygcgopt_3gcg_Score;
struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition;
struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier;
struct __pyx_obj_8pygcgopt_3gcg_VarClassifier;
struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS;
struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN;
struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO;
struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO;
struct __pyx_obj_8pygcgopt_3gcg_Model;
struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel;
struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel;
struct __pyx_opt_args_7cpython_11contextvars_get_value;
struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default;

/* "cpython/contextvars.pxd":112
 * 
 * 
 * cdef inline object get_value(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the default value of the context variable,
 */
struct __pyx_opt_args_7cpython_11contextvars_get_value {
  int __pyx_n;
  PyObject *default_value;
};

/* "cpython/contextvars.pxd":129
 * 
 * 
 * cdef inline object get_value_no_default(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the provided default value if no such value was found.
 */
struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default {
  int __pyx_n;
  PyObject *default_value;
};
struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization;

/* "src/pygcgopt/decomposition.pxi":1400
 *         return self.__generate_visualization("png")
 * 
 *     cdef __generate_visualization(self, format="svg"):             # <<<<<<<<<<<<<<
 *         format = format.lower()
 *         if format not in ["svg", "png"]:
 */
struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization {
  int __pyx_n;
  PyObject *format;
};

/* "pyscipopt/scip.pxd":1887
 *     int SCIPtpiGetNumThreads()
 * 
 * cdef class Expr:             # <<<<<<<<<<<<<<
 *     cdef public terms
 * 
 */
struct __pyx_obj_9pyscipopt_4scip_Expr {
  PyObject_HEAD
  PyObject *terms;
};


/* "pyscipopt/scip.pxd":1890
 *     cdef public terms
 * 
 * cdef class Event:             # <<<<<<<<<<<<<<
 *     cdef SCIP_EVENT* event
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Event {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Event *__pyx_vtab;
  SCIP_EVENT *event;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1897
 *     cdef create(SCIP_EVENT* scip_event)
 * 
 * cdef class Column:             # <<<<<<<<<<<<<<
 *     cdef SCIP_COL* scip_col
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Column {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Column *__pyx_vtab;
  SCIP_COL *scip_col;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1905
 *     cdef create(SCIP_COL* scipcol)
 * 
 * cdef class Row:             # <<<<<<<<<<<<<<
 *     cdef SCIP_ROW* scip_row
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Row {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Row *__pyx_vtab;
  SCIP_ROW *scip_row;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1913
 *     cdef create(SCIP_ROW* sciprow)
 * 
 * cdef class NLRow:             # <<<<<<<<<<<<<<
 *     cdef SCIP_NLROW* scip_nlrow
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_NLRow {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_NLRow *__pyx_vtab;
  SCIP_NLROW *scip_nlrow;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1921
 *     cdef create(SCIP_NLROW* scipnlrow)
 * 
 * cdef class Solution:             # <<<<<<<<<<<<<<
 *     cdef SCIP_SOL* sol
 *     cdef SCIP* scip
 */
struct __pyx_obj_9pyscipopt_4scip_Solution {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Solution *__pyx_vtab;
  SCIP_SOL *sol;
  SCIP *scip;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1930
 *     cdef create(SCIP* scip, SCIP_SOL* scip_sol)
 * 
 * cdef class DomainChanges:             # <<<<<<<<<<<<<<
 *     cdef SCIP_DOMCHG* scip_domchg
 * 
 */
struct __pyx_obj_9pyscipopt_4scip_DomainChanges {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_DomainChanges *__pyx_vtab;
  SCIP_DOMCHG *scip_domchg;
};


/* "pyscipopt/scip.pxd":1936
 *     cdef create(SCIP_DOMCHG* scip_domchg)
 * 
 * cdef class BoundChange:             # <<<<<<<<<<<<<<
 *     cdef SCIP_BOUNDCHG* scip_boundchg
 * 
 */
struct __pyx_obj_9pyscipopt_4scip_BoundChange {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_BoundChange *__pyx_vtab;
  SCIP_BOUNDCHG *scip_boundchg;
};


/* "pyscipopt/scip.pxd":1942
 *     cdef create(SCIP_BOUNDCHG* scip_boundchg)
 * 
 * cdef class Node:             # <<<<<<<<<<<<<<
 *     cdef SCIP_NODE* scip_node
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Node {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Node *__pyx_vtab;
  SCIP_NODE *scip_node;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1950
 *     cdef create(SCIP_NODE* scipnode)
 * 
 * cdef class Variable(Expr):             # <<<<<<<<<<<<<<
 *     cdef SCIP_VAR* scip_var
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Variable {
  struct __pyx_obj_9pyscipopt_4scip_Expr __pyx_base;
  struct __pyx_vtabstruct_9pyscipopt_4scip_Variable *__pyx_vtab;
  SCIP_VAR *scip_var;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1958
 *     cdef create(SCIP_VAR* scipvar)
 * 
 * cdef class Constraint:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CONS* scip_cons
 *     # can be used to store problem data
 */
struct __pyx_obj_9pyscipopt_4scip_Constraint {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Constraint *__pyx_vtab;
  SCIP_CONS *scip_cons;
  PyObject *data;
};


/* "pyscipopt/scip.pxd":1966
 *     cdef create(SCIP_CONS* scipcons)
 * 
 * cdef class Model:             # <<<<<<<<<<<<<<
 *     cdef SCIP* _scip
 *     cdef SCIP_Bool* _valid
 */
struct __pyx_obj_9pyscipopt_4scip_Model {
  PyObject_HEAD
  struct __pyx_vtabstruct_9pyscipopt_4scip_Model *__pyx_vtab;
  SCIP *_scip;
  SCIP_Bool *_valid;
  struct __pyx_obj_9pyscipopt_4scip_Solution *_bestSol;
  PyObject *data;
  PyObject *__weakref__;
  SCIP_Bool _freescip;
  PyObject *_modelvars;
  int _generated_event_handlers_count;
};


/* "pygcgopt/gcg.pxd":519
 *     SCIP_Real SCIPgetClockTime(SCIP* scip, SCIP_CLOCK* clck)
 * 
 * cdef class DetProbData:             # <<<<<<<<<<<<<<
 *     cdef DETPROBDATA* thisptr
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_DetProbData {
  PyObject_HEAD
  struct __pyx_vtabstruct_8pygcgopt_3gcg_DetProbData *__pyx_vtab;
  gcg::DETPROBDATA *thisptr;
};


/* "pygcgopt/gcg.pxd":525
 *     cdef create(DETPROBDATA* thisptr)
 * 
 * cdef class ConsPart:             # <<<<<<<<<<<<<<
 *     cdef ConsPartition* consPartition
 *     cdef DetProbData detProbData
 */
struct __pyx_obj_8pygcgopt_3gcg_ConsPart {
  PyObject_HEAD
  struct __pyx_vtabstruct_8pygcgopt_3gcg_ConsPart *__pyx_vtab;
  gcg::ConsPartition *consPartition;
  struct __pyx_obj_8pygcgopt_3gcg_DetProbData *detProbData;
};


/* "pygcgopt/gcg.pxd":532
 *     cdef create(ConsPartition* thisptr, DetProbData detProbData)
 * 
 * cdef class VarPart:             # <<<<<<<<<<<<<<
 *     cdef VarPartition* varPartition
 *     cdef DetProbData detProbData
 */
struct __pyx_obj_8pygcgopt_3gcg_VarPart {
  PyObject_HEAD
  struct __pyx_vtabstruct_8pygcgopt_3gcg_VarPart *__pyx_vtab;
  gcg::VarPartition *varPartition;
  struct __pyx_obj_8pygcgopt_3gcg_DetProbData *detProbData;
};


/* "pygcgopt/gcg.pxd":539
 *     cdef create(VarPartition* thisptr, DetProbData detProbData)
 * 
 * cdef class GCGColumn:             # <<<<<<<<<<<<<<
 *     cdef GCG_COL* gcg_col
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_GCGColumn {
  PyObject_HEAD
  struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGColumn *__pyx_vtab;
  GCG_COL *gcg_col;
};


/* "src/pygcgopt/detector.pxi":1
 * cdef class Detector:             # <<<<<<<<<<<<<<
 *     """Base class of the Detector Plugin"""
 *     cdef public Model model
 */
struct __pyx_obj_8pygcgopt_3gcg_Detector {
  PyObject_HEAD
  struct __pyx_obj_8pygcgopt_3gcg_Model *model;
  PyObject *detectorname;
};


/* "src/pygcgopt/pricing_solver.pxi":1
 * cdef class PricingSolver:             # <<<<<<<<<<<<<<
 *     """Base class of the Pricing Solver Plugin"""
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_PricingSolver {
  PyObject_HEAD
  struct __pyx_obj_8pygcgopt_3gcg_Model *model;
  PyObject *solvername;
};


/* "src/pygcgopt/score.pxi":1
 * cdef class Score:             # <<<<<<<<<<<<<<
 *     """Base class of the Score Plugin"""
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_Score {
  PyObject_HEAD
  struct __pyx_obj_8pygcgopt_3gcg_Model *model;
  PyObject *scorename;
};


/* "src/pygcgopt/decomposition.pxi":1
 * cdef class PartialDecomposition:             # <<<<<<<<<<<<<<
 *     """class to manage partial decompositions
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition {
  PyObject_HEAD
  struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition *__pyx_vtab;
  gcg::PARTIALDECOMP *thisptr;
  bool delete_thisptr;
  PyObject *_visualizations;
  PyObject *py_block_id_map;
};


/* "src/pygcgopt/consclassifier.pxi":1
 * cdef class ConsClassifier:             # <<<<<<<<<<<<<<
 *     """Base class of the Constraint Classifier Plugin"""
 *     cdef public Model model
 */
struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier {
  PyObject_HEAD
  struct __pyx_obj_8pygcgopt_3gcg_Model *model;
  PyObject *name;
};


/* "src/pygcgopt/varclassifier.pxi":1
 * cdef class VarClassifier:             # <<<<<<<<<<<<<<
 *     """Base class of the Variable Classifier Plugin"""
 *     cdef public Model model
 */
struct __pyx_obj_8pygcgopt_3gcg_VarClassifier {
  PyObject_HEAD
  struct __pyx_obj_8pygcgopt_3gcg_Model *model;
  PyObject *name;
};


/* "pygcgopt/gcg.pyx":47
 * 
 * 
 * cdef class PY_GCG_PRICINGSTATUS:             # <<<<<<<<<<<<<<
 *     UNKNOWN       = GCG_PRICINGSTATUS_UNKNOWN
 *     NOTAPPLICABLE = GCG_PRICINGSTATUS_NOTAPPLICABLE
 */
struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS {
  PyObject_HEAD
};


/* "pygcgopt/gcg.pyx":55
 *     UNBOUNDED     = GCG_PRICINGSTATUS_UNBOUNDED
 * 
 * cdef class PY_USERGIVEN:             # <<<<<<<<<<<<<<
 *     PY_NOT                    = NOT
 *     PY_PARTIAL                = PARTIAL
 */
struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN {
  PyObject_HEAD
};


/* "pygcgopt/gcg.pyx":61
 *     PY_COMPLETED_CONSTOMASTER = COMPLETED_CONSTOMASTER
 * 
 * cdef class PY_VAR_DECOMPINFO:             # <<<<<<<<<<<<<<
 *     PY_ALL     = ALL
 *     PY_LINKING = LINKING
 */
struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO {
  PyObject_HEAD
};


/* "pygcgopt/gcg.pyx":67
 *     PY_BLOCK   = BLOCK
 * 
 * cdef class PY_CONS_DECOMPINFO:             # <<<<<<<<<<<<<<
 *     PY_BOTH         = BOTH
 *     PY_ONLY_MASTER  = ONLY_MASTER
 */
struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO {
  PyObject_HEAD
};


/* "pygcgopt/gcg.pyx":72
 *     PY_ONLY_PRICING = ONLY_PRICING
 * 
 * cdef class Model(SCIPModel):             # <<<<<<<<<<<<<<
 *     """Main class for interaction with the GCG solver."""
 * 
 */
struct __pyx_obj_8pygcgopt_3gcg_Model {
  struct __pyx_obj_9pyscipopt_4scip_Model __pyx_base;
};


/* "pygcgopt/gcg.pyx":512
 * 
 * 
 * cdef class GCGPricingModel(SCIPModel):             # <<<<<<<<<<<<<<
 *     @staticmethod
 *     cdef create(SCIP* scip):
 */
struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel {
  struct __pyx_obj_9pyscipopt_4scip_Model __pyx_base;
};


/* "pygcgopt/gcg.pyx":552
 * 
 * 
 * cdef class GCGMasterModel(SCIPModel):             # <<<<<<<<<<<<<<
 *     @staticmethod
 *     cdef create(SCIP* scip):
 */
struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel {
  struct __pyx_obj_9pyscipopt_4scip_Model __pyx_base;
};



/* "pyscipopt/scip.pxd":1890
 *     cdef public terms
 * 
 * cdef class Event:             # <<<<<<<<<<<<<<
 *     cdef SCIP_EVENT* event
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Event {
  PyObject *(*create)(SCIP_EVENT *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Event *__pyx_vtabptr_9pyscipopt_4scip_Event;


/* "pyscipopt/scip.pxd":1897
 *     cdef create(SCIP_EVENT* scip_event)
 * 
 * cdef class Column:             # <<<<<<<<<<<<<<
 *     cdef SCIP_COL* scip_col
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Column {
  PyObject *(*create)(SCIP_COL *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Column *__pyx_vtabptr_9pyscipopt_4scip_Column;


/* "pyscipopt/scip.pxd":1905
 *     cdef create(SCIP_COL* scipcol)
 * 
 * cdef class Row:             # <<<<<<<<<<<<<<
 *     cdef SCIP_ROW* scip_row
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Row {
  PyObject *(*create)(SCIP_ROW *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Row *__pyx_vtabptr_9pyscipopt_4scip_Row;


/* "pyscipopt/scip.pxd":1913
 *     cdef create(SCIP_ROW* sciprow)
 * 
 * cdef class NLRow:             # <<<<<<<<<<<<<<
 *     cdef SCIP_NLROW* scip_nlrow
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_NLRow {
  PyObject *(*create)(SCIP_NLROW *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_NLRow *__pyx_vtabptr_9pyscipopt_4scip_NLRow;


/* "pyscipopt/scip.pxd":1921
 *     cdef create(SCIP_NLROW* scipnlrow)
 * 
 * cdef class Solution:             # <<<<<<<<<<<<<<
 *     cdef SCIP_SOL* sol
 *     cdef SCIP* scip
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Solution {
  PyObject *(*create)(SCIP *, SCIP_SOL *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Solution *__pyx_vtabptr_9pyscipopt_4scip_Solution;


/* "pyscipopt/scip.pxd":1930
 *     cdef create(SCIP* scip, SCIP_SOL* scip_sol)
 * 
 * cdef class DomainChanges:             # <<<<<<<<<<<<<<
 *     cdef SCIP_DOMCHG* scip_domchg
 * 
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_DomainChanges {
  PyObject *(*create)(SCIP_DOMCHG *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_DomainChanges *__pyx_vtabptr_9pyscipopt_4scip_DomainChanges;


/* "pyscipopt/scip.pxd":1936
 *     cdef create(SCIP_DOMCHG* scip_domchg)
 * 
 * cdef class BoundChange:             # <<<<<<<<<<<<<<
 *     cdef SCIP_BOUNDCHG* scip_boundchg
 * 
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_BoundChange {
  PyObject *(*create)(SCIP_BOUNDCHG *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_BoundChange *__pyx_vtabptr_9pyscipopt_4scip_BoundChange;


/* "pyscipopt/scip.pxd":1942
 *     cdef create(SCIP_BOUNDCHG* scip_boundchg)
 * 
 * cdef class Node:             # <<<<<<<<<<<<<<
 *     cdef SCIP_NODE* scip_node
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Node {
  PyObject *(*create)(SCIP_NODE *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Node *__pyx_vtabptr_9pyscipopt_4scip_Node;


/* "pyscipopt/scip.pxd":1950
 *     cdef create(SCIP_NODE* scipnode)
 * 
 * cdef class Variable(Expr):             # <<<<<<<<<<<<<<
 *     cdef SCIP_VAR* scip_var
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Variable {
  PyObject *(*create)(SCIP_VAR *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Variable *__pyx_vtabptr_9pyscipopt_4scip_Variable;


/* "pyscipopt/scip.pxd":1958
 *     cdef create(SCIP_VAR* scipvar)
 * 
 * cdef class Constraint:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CONS* scip_cons
 *     # can be used to store problem data
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Constraint {
  PyObject *(*create)(SCIP_CONS *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Constraint *__pyx_vtabptr_9pyscipopt_4scip_Constraint;


/* "pyscipopt/scip.pxd":1966
 *     cdef create(SCIP_CONS* scipcons)
 * 
 * cdef class Model:             # <<<<<<<<<<<<<<
 *     cdef SCIP* _scip
 *     cdef SCIP_Bool* _valid
 */

struct __pyx_vtabstruct_9pyscipopt_4scip_Model {
  PyObject *(*create)(SCIP *);
};
static struct __pyx_vtabstruct_9pyscipopt_4scip_Model *__pyx_vtabptr_9pyscipopt_4scip_Model;


/* "src/pygcgopt/detprobdata.pxi":1
 * cdef class DetProbData:             # <<<<<<<<<<<<<<
 *     """Base class holding a pointer to corresponding DETPROBDATA"""
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_DetProbData {
  PyObject *(*create)(gcg::DETPROBDATA *);
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_DetProbData *__pyx_vtabptr_8pygcgopt_3gcg_DetProbData;


/* "src/pygcgopt/partition.pxi":1
 * cdef class ConsPart:             # <<<<<<<<<<<<<<
 *     """Base class holding a pointer to corresponding ConsPartition"""
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_ConsPart {
  PyObject *(*create)(gcg::ConsPartition *, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *);
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_ConsPart *__pyx_vtabptr_8pygcgopt_3gcg_ConsPart;


/* "src/pygcgopt/partition.pxi":200
 *         self.consPartition.setClassDecompInfo(classindex, decompInfo)
 * 
 * cdef class VarPart:             # <<<<<<<<<<<<<<
 *     """Base class holding a pointer to corresponding VarPartition"""
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_VarPart {
  PyObject *(*create)(gcg::VarPartition *, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *);
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_VarPart *__pyx_vtabptr_8pygcgopt_3gcg_VarPart;


/* "pygcgopt/gcg.pyx":578
 * 
 * 
 * cdef class GCGColumn:             # <<<<<<<<<<<<<<
 *     """Base class holding a pointer to corresponding GCG_COL"""
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGColumn {
  PyObject *(*create)(GCG_COL *);
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGColumn *__pyx_vtabptr_8pygcgopt_3gcg_GCGColumn;


/* "src/pygcgopt/decomposition.pxi":1
 * cdef class PartialDecomposition:             # <<<<<<<<<<<<<<
 *     """class to manage partial decompositions
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition {
  PyObject *(*create)(gcg::PARTIALDECOMP *);
  PyObject *(*_PartialDecomposition__generate_visualization)(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *, struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization *__pyx_optional_args);
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition *__pyx_vtabptr_8pygcgopt_3gcg_PartialDecomposition;


/* "pygcgopt/gcg.pyx":72
 *     PY_ONLY_PRICING = ONLY_PRICING
 * 
 * cdef class Model(SCIPModel):             # <<<<<<<<<<<<<<
 *     """Main class for interaction with the GCG solver."""
 * 
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_Model {
  struct __pyx_vtabstruct_9pyscipopt_4scip_Model __pyx_base;
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_Model *__pyx_vtabptr_8pygcgopt_3gcg_Model;


/* "pygcgopt/gcg.pyx":512
 * 
 * 
 * cdef class GCGPricingModel(SCIPModel):             # <<<<<<<<<<<<<<
 *     @staticmethod
 *     cdef create(SCIP* scip):
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGPricingModel {
  struct __pyx_vtabstruct_9pyscipopt_4scip_Model __pyx_base;
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGPricingModel *__pyx_vtabptr_8pygcgopt_3gcg_GCGPricingModel;


/* "pygcgopt/gcg.pyx":552
 * 
 * 
 * cdef class GCGMasterModel(SCIPModel):             # <<<<<<<<<<<<<<
 *     @staticmethod
 *     cdef create(SCIP* scip):
 */

struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGMasterModel {
  struct __pyx_vtabstruct_9pyscipopt_4scip_Model __pyx_base;
};
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGMasterModel *__pyx_vtabptr_8pygcgopt_3gcg_GCGMasterModel;
/* #### Code section: utility_code_proto ### */

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, Py_ssize_t);
    void (*DECREF)(void*, PyObject*, Py_ssize_t);
    void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    void* (*SetupContext)(const char*, Py_ssize_t, 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__));\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
  #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
#endif
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #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); else {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContextNogil()
  #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_Py_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; Py_XDECREF(tmp);\
    } while (0)
#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)

/* 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;
#if PY_VERSION_HEX >= 0x030C00A6
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
#else
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
#endif
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  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 && PY_VERSION_HEX < 0x030C00A6
#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

/* 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

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

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

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

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

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

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

/* TupleAndListFromArray.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
#endif

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

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* fastcall.proto */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
#else
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
#endif
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
    #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
#else
    #define __Pyx_Arg_NewRef_VARARGS(arg) arg
    #define __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
#define __Pyx_KwValues_VARARGS(args, nargs) NULL
#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
#if CYTHON_METH_FASTCALL
    #define __Pyx_Arg_FASTCALL(args, i) args[i]
    #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
    #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
    #define __Pyx_Arg_NewRef_FASTCALL(arg) arg  /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
                                                   to have the same reference counting */
    #define __Pyx_Arg_XDECREF_FASTCALL(arg)
#else
    #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
    #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
    #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
    #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
#else
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* 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);

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

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

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

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

/* RaiseUnexpectedTypeError.proto */
static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);

/* 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)  do {\
    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);\
} while(0)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
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

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *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_VECTORCALL
#if PY_VERSION_HEX >= 0x03080000
  #include "frameobject.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
  #define __Pxy_PyFrame_Initialize_Offsets()
  #define __Pyx_PyFrame_GetLocalsplus(frame)  ((frame)->f_localsplus)
#else
  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
#endif
#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

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

/* PyObjectFastCall.proto */
#define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);

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

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

/* 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

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

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

/* PyObjectCallNoArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

/* decode_c_string_utf16.proto */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely(__Pyx_IS_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);

/* 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));
}

/* 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);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __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

/* MoveIfSupported.proto */
#if CYTHON_USE_CPP_STD_MOVE
  #include <utility>
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) std::move(x)
#else
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) x
#endif

/* 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);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __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

/* 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_repr(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(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

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

/* 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));
}

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
#define __Pyx_PyObject_LookupSpecial(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* PyObject_Unicode.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))
#else
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj))
#endif

/* RaiseUnboundLocalError.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
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

/* 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

/* 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

/* 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

/* UnicodeAsUCS4.proto */
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject*);

/* object_ord.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyObject_Ord(c)\
    (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c))
#else
#define __Pyx_PyObject_Ord(c) __Pyx__PyObject_Ord(c)
#endif
static long __Pyx__PyObject_Ord(PyObject* c);

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

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

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

/* 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_clear);

/* IncludeStructmemberH.proto */
#include <structmember.h>

/* FixUpExtensionType.proto */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
#endif

/* 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);

/* ValidateBasesTuple.proto */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
#endif

/* PyType_Ready.proto */
CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);

/* 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

/* SetVTable.proto */
static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);

/* GetVTable.proto */
static void* __Pyx_GetVtable(PyTypeObject *type);

/* MergeVTables.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type);
#endif

/* SetupReduce.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce(PyObject* type_obj);
#endif

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11
#define __PYX_HAVE_RT_ImportType_proto_3_0_11
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_0_11 {
   __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
};
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
#endif

/* ImportDottedModule.proto */
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
#endif

/* FetchSharedCythonModule.proto */
static PyObject *__Pyx_FetchSharedCythonABIModule(void);

/* FetchCommonType.proto */
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
#else
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
#endif

/* PyMethodNew.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    typesModule = PyImport_ImportModule("types");
    if (!typesModule) return NULL;
    methodType = PyObject_GetAttrString(typesModule, "MethodType");
    Py_DECREF(typesModule);
    if (!methodType) return NULL;
    result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
    Py_DECREF(methodType);
    return result;
}
#elif PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    return PyMethod_New(func, self);
}
#else
    #define __Pyx_PyMethod_New PyMethod_New
#endif

/* PyVectorcallFastCallDict.proto */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
#endif

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CYFUNCTION_COROUTINE     0x08
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_CyFunction_GetClassObj(f)\
      (((__pyx_CyFunctionObject *) (f))->func_classobj)
#else
  #define __Pyx_CyFunction_GetClassObj(f)\
      ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
#endif
#define __Pyx_CyFunction_SetClassObj(f, classobj)\
    __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject_HEAD
    PyObject *func;
#elif PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_BACKPORT_VECTORCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_classobj;
#endif
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#undef __Pyx_CyOrPyCFunction_Check
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
#undef __Pyx_IsSameCFunction
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(PyObject *module);
#if CYTHON_METH_FASTCALL
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#if CYTHON_BACKPORT_VECTORCALL
#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
#else
#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
#endif
#endif

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* 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 */
#if !CYTHON_COMPILING_IN_LIMITED_API
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);
#endif

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

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

/* CppExceptionConversion.proto */
#ifndef __Pyx_CppExn2PyErr
#include <new>
#include <typeinfo>
#include <stdexcept>
#include <ios>
static void __Pyx_CppExn2PyErr() {
  try {
    if (PyErr_Occurred())
      ; // let the latest Python exn pass through and ignore the current one
    else
      throw;
  } catch (const std::bad_alloc& exn) {
    PyErr_SetString(PyExc_MemoryError, exn.what());
  } catch (const std::bad_cast& exn) {
    PyErr_SetString(PyExc_TypeError, exn.what());
  } catch (const std::bad_typeid& exn) {
    PyErr_SetString(PyExc_TypeError, exn.what());
  } catch (const std::domain_error& exn) {
    PyErr_SetString(PyExc_ValueError, exn.what());
  } catch (const std::invalid_argument& exn) {
    PyErr_SetString(PyExc_ValueError, exn.what());
  } catch (const std::ios_base::failure& exn) {
    PyErr_SetString(PyExc_IOError, exn.what());
  } catch (const std::out_of_range& exn) {
    PyErr_SetString(PyExc_IndexError, exn.what());
  } catch (const std::overflow_error& exn) {
    PyErr_SetString(PyExc_OverflowError, exn.what());
  } catch (const std::range_error& exn) {
    PyErr_SetString(PyExc_ArithmeticError, exn.what());
  } catch (const std::underflow_error& exn) {
    PyErr_SetString(PyExc_ArithmeticError, exn.what());
  } catch (const std::exception& exn) {
    PyErr_SetString(PyExc_RuntimeError, exn.what());
  }
  catch (...)
  {
    PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
  }
}
#endif

/* None.proto */
#include <new>

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

/* CIntFromPy.proto */
static CYTHON_INLINE gcg::USERGIVEN __Pyx_PyInt_As_gcg_3a__3a_USERGIVEN(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::USERGIVEN value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::VAR_DECOMPINFO value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(gcg::CONS_DECOMPINFO value);

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

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

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_RESULT(SCIP_RESULT value);

/* CIntFromPy.proto */
static CYTHON_INLINE SCIP_RESULT __Pyx_PyInt_As_SCIP_RESULT(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE GCG_PRICINGSTATUS __Pyx_PyInt_As_GCG_PRICINGSTATUS(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE gcg::CONS_DECOMPINFO __Pyx_PyInt_As_gcg_3a__3a_CONS_DECOMPINFO(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE gcg::VAR_DECOMPINFO __Pyx_PyInt_As_gcg_3a__3a_VAR_DECOMPINFO(PyObject *);

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

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

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_RETCODE(SCIP_RETCODE value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_STAGE(SCIP_STAGE value);

/* CIntFromPy.proto */
static CYTHON_INLINE SCIP_PARAMSETTING __Pyx_PyInt_As_SCIP_PARAMSETTING(PyObject *);

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

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#else
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, 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_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#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_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* CheckBinaryVersion.proto */
static unsigned long __Pyx_get_runtime_version(void);
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);

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

/* #### Code section: module_declarations ### */
static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4real_real(PyComplexObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4imag_imag(PyComplexObject *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_8ConsPart_create(gcg::ConsPartition *__pyx_v_consPartition, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_detProbData); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_7VarPart_create(gcg::VarPartition *__pyx_v_varPartition, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_detProbData); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(gcg::PARTIALDECOMP *__pyx_v_thisptr); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_20PartialDecomposition__PartialDecomposition__generate_visualization(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization *__pyx_optional_args); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_11DetProbData_create(gcg::DETPROBDATA *__pyx_v_thisptr); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create(SCIP *__pyx_v_scip); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_14GCGMasterModel_create(SCIP *__pyx_v_scip); /* proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_9GCGColumn_create(GCG_COL *__pyx_v_gcgcol); /* proto*/

/* Module declarations from "pyscipopt.scip" */

/* Module declarations from "libcpp" */

/* Module declarations from "libcpp.vector" */

/* Module declarations from "libc.string" */

/* Module declarations from "libcpp.string" */

/* Module declarations from "libcpp.utility" */

/* Module declarations from "libcpp.pair" */

/* Module declarations from "cpython.version" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.type" */

/* Module declarations from "libc.stdio" */

/* Module declarations from "cpython.object" */

/* Module declarations from "cpython.ref" */

/* Module declarations from "cpython.exc" */

/* Module declarations from "cpython.module" */

/* Module declarations from "cpython.mem" */

/* Module declarations from "cpython.tuple" */

/* Module declarations from "cpython.list" */

/* Module declarations from "cpython.sequence" */

/* Module declarations from "cpython.mapping" */

/* Module declarations from "cpython.iterator" */

/* Module declarations from "cpython.number" */

/* Module declarations from "cpython.int" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.bool" */

/* Module declarations from "cpython.long" */

/* Module declarations from "cpython.float" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.complex" */

/* Module declarations from "cpython.string" */

/* Module declarations from "libc.stddef" */

/* Module declarations from "cpython.unicode" */

/* Module declarations from "cpython.pyport" */

/* Module declarations from "cpython.dict" */

/* Module declarations from "cpython.instance" */

/* Module declarations from "cpython.function" */

/* Module declarations from "cpython.method" */

/* Module declarations from "cpython.weakref" */

/* Module declarations from "cpython.getargs" */

/* Module declarations from "cpython.pythread" */

/* Module declarations from "cpython.pystate" */

/* Module declarations from "cpython.cobject" */

/* Module declarations from "cpython.oldbuffer" */

/* Module declarations from "cpython.set" */

/* Module declarations from "cpython.buffer" */

/* Module declarations from "cpython.bytes" */

/* Module declarations from "cpython.pycapsule" */

/* Module declarations from "cpython.contextvars" */

/* Module declarations from "cpython" */

/* Module declarations from "libc.stdlib" */

/* Module declarations from "pygcgopt.gcg" */
static struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_f_8pygcgopt_3gcg_get_py_detector(GCG_DETECTOR *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg_wrap_detector_callback_result(struct __pyx_obj_8pygcgopt_3gcg_Detector *, PARTIALDEC_DETECTION_DATA *, SCIP_RESULT *, PyObject *, double); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorFree(SCIP *, GCG_DETECTOR *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorInit(SCIP *, GCG_DETECTOR *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorExit(SCIP *, GCG_DETECTOR *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorPropagatePartialdec(SCIP *, GCG_DETECTOR *, PARTIALDEC_DETECTION_DATA *, SCIP_RESULT *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorFinishPartialdec(SCIP *, GCG_DETECTOR *, PARTIALDEC_DETECTION_DATA *, SCIP_RESULT *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorPostprocessPartialdec(SCIP *, GCG_DETECTOR *, PARTIALDEC_DETECTION_DATA *, SCIP_RESULT *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamAggressive(SCIP *, GCG_DETECTOR *, SCIP_RESULT *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamDefault(SCIP *, GCG_DETECTOR *, SCIP_RESULT *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamFast(SCIP *, GCG_DETECTOR *, SCIP_RESULT *); /*proto*/
static struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverFree(SCIP *, GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverInit(SCIP *, GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverExit(SCIP *, GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverInitSol(SCIP *, GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverExitSol(SCIP *, GCG_SOLVER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverUpdate(SCIP *, GCG_SOLVER *, int, SCIP_Bool, SCIP_Bool, SCIP_Bool); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolve(SCIP *, SCIP *, GCG_SOLVER *, int, SCIP_Real, SCIP_Real *, GCG_PRICINGSTATUS *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolveHeur(SCIP *, SCIP *, GCG_SOLVER *, int, SCIP_Real, SCIP_Real *, GCG_PRICINGSTATUS *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyScoreFree(SCIP *, GCG_SCORE *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyScoreCalculate(SCIP *, GCG_SCORE *, int, SCIP_Real *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyConsClassifierFree(SCIP *, GCG_CONSCLASSIFIER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyConsClassifierClassify(SCIP *, GCG_CONSCLASSIFIER *, SCIP_Bool); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyVarClassifierFree(SCIP *, GCG_VARCLASSIFIER *); /*proto*/
static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyVarClassifierClassify(SCIP *, GCG_VARCLASSIFIER *, SCIP_Bool); /*proto*/
static SCIP_CLOCK *__pyx_f_8pygcgopt_3gcg_start_new_clock(SCIP *); /*proto*/
static double __pyx_f_8pygcgopt_3gcg_stop_and_free_clock(SCIP *, SCIP_CLOCK *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_Detector__set_state(struct __pyx_obj_8pygcgopt_3gcg_Detector *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PricingSolver__set_state(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_Score__set_state(struct __pyx_obj_8pygcgopt_3gcg_Score *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_ConsClassifier__set_state(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_VarClassifier__set_state(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_USERGIVEN__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_VAR_DECOMPINFO__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *, PyObject *); /*proto*/
static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_CONS_DECOMPINFO__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *, PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_int(std::vector<int>  const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(std::vector<std::vector<int> >  const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_double(std::vector<double>  const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(std::string const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_string(std::vector<std::string>  const &); /*proto*/
static std::vector<double>  __pyx_convert_vector_from_py_double(PyObject *); /*proto*/
static std::vector<int>  __pyx_convert_vector_from_py_int(PyObject *); /*proto*/
static PyObject *__pyx_convert_pair_to_py_int____int(std::pair<int,int>  const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(std::vector<std::pair<int,int> >  const &); /*proto*/
static std::pair<int,int>  __pyx_convert_pair_from_py_int__and_int(PyObject *); /*proto*/
static std::vector<std::pair<int,int> >  __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_SCIP_Real(std::vector<SCIP_Real>  const &); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "pygcgopt.gcg"
extern int __pyx_module_is_main_pygcgopt__gcg;
int __pyx_module_is_main_pygcgopt__gcg = 0;

/* Implementation of "pygcgopt.gcg" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_Warning;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_print;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_MemoryError;
/* #### Code section: string_decls ### */
static const char __pyx_k_c[] = "c";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_r[] = "r";
static const char __pyx_k_v[] = "v";
static const char __pyx_k__6[] = ".";
static const char __pyx_k__8[] = ">";
static const char __pyx_k_gc[] = "gc";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_mp[] = "mp";
static const char __pyx_k_pd[] = "pd";
static const char __pyx_k__20[] = "*";
static const char __pyx_k_all[] = "all";
static const char __pyx_k_col[] = "col";
static const char __pyx_k_dec[] = "dec";
static const char __pyx_k_get[] = "get";
static const char __pyx_k_idx[] = "idx";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_pct[] = "pct";
static const char __pyx_k_png[] = "png";
static const char __pyx_k_row[] = "row";
static const char __pyx_k_svg[] = "svg";
static const char __pyx_k_var[] = "var";
static const char __pyx_k_vis[] = "vis";
static const char __pyx_k_List[] = "List";
static const char __pyx_k_Path[] = "Path";
static const char __pyx_k__515[] = "?";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_both[] = "both";
static const char __pyx_k_cons[] = "cons";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_desc[] = "desc";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_scip[] = "scip";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_skip[] = "skip";
static const char __pyx_k_sort[] = "sort";
static const char __pyx_k_spec[] = "__spec__";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_vals[] = "vals";
static const char __pyx_k_vars[] = "vars";
static const char __pyx_k_Model[] = "Model";
static const char __pyx_k_Score[] = "Score";
static const char __pyx_k_block[] = "block";
static const char __pyx_k_class[] = "__class__";
static const char __pyx_k_conss[] = "conss";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_getID[] = "getID";
static const char __pyx_k_index[] = "index";
static const char __pyx_k_isray[] = "isray";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_mkdir[] = "mkdir";
static const char __pyx_k_ncons[] = "ncons";
static const char __pyx_k_nvars[] = "nvars";
static const char __pyx_k_print[] = "print";
static const char __pyx_k_proxy[] = "proxy";
static const char __pyx_k_pyVar[] = "pyVar";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_repid[] = "repid";
static const char __pyx_k_score[] = "score";
static const char __pyx_k_solve[] = "solve";
static const char __pyx_k_state[] = "state";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_varid[] = "varid";
static const char __pyx_k_Format[] = "Format ";
static const char __pyx_k_PY_ALL[] = "PY_ALL";
static const char __pyx_k_PY_NOT[] = "PY_NOT";
static const char __pyx_k_addCol[] = "addCol";
static const char __pyx_k_addVar[] = "addVar";
static const char __pyx_k_buffer[] = "buffer";
static const char __pyx_k_c_desc[] = "c_desc";
static const char __pyx_k_c_name[] = "c_name";
static const char __pyx_k_c_vals[] = "c_vals";
static const char __pyx_k_c_vars[] = "c_vars";
static const char __pyx_k_copy_2[] = "__copy__";
static const char __pyx_k_dec_id[] = "dec_id";
static const char __pyx_k_decids[] = "decids";
static const char __pyx_k_decomp[] = "decomp";
static const char __pyx_k_detect[] = "detect";
static const char __pyx_k_dict_2[] = "_dict";
static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_getVal[] = "getVal";
static const char __pyx_k_getVar[] = "getVar";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_kwargs[] = "kwargs";
static const char __pyx_k_master[] = "master";
static const char __pyx_k_n_vars[] = "n_vars";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_nvotes[] = "nvotes";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_probnr[] = "probnr";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_rep_id[] = "rep_id";
static const char __pyx_k_result[] = "result";
static const char __pyx_k_scores[] = "scores";
static const char __pyx_k_status[] = "status";
static const char __pyx_k_typing[] = "typing";
static const char __pyx_k_update[] = "update";
static const char __pyx_k_vis_gp[] = "vis.gp";
static const char __pyx_k_OPTIMAL[] = "OPTIMAL";
static const char __pyx_k_PY_BOTH[] = "PY_BOTH";
static const char __pyx_k_UNKNOWN[] = "UNKNOWN";
static const char __pyx_k_VarPart[] = "VarPart";
static const char __pyx_k_Warning[] = "Warning";
static const char __pyx_k_classic[] = "classic";
static const char __pyx_k_cpp_pct[] = "cpp_pct";
static const char __pyx_k_decchar[] = "decchar";
static const char __pyx_k_decinfo[] = "decinfo";
static const char __pyx_k_decomps[] = "decomps";
static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_enabled[] = "enabled";
static const char __pyx_k_gcg_col[] = "gcg_col";
static const char __pyx_k_getCons[] = "getCons";
static const char __pyx_k_getName[] = "getName";
static const char __pyx_k_linking[] = "linking";
static const char __pyx_k_nblocks[] = "nblocks";
static const char __pyx_k_newlist[] = "newlist";
static const char __pyx_k_parents[] = "parents";
static const char __pyx_k_pathlib[] = "pathlib";
static const char __pyx_k_prepare[] = "prepare";
static const char __pyx_k_redcost[] = "redcost";
static const char __pyx_k_setting[] = "setting";
static const char __pyx_k_weakref[] = "weakref";
static const char __pyx_k_ConsPart[] = "ConsPart";
static const char __pyx_k_Detector[] = "Detector";
static const char __pyx_k_Iterable[] = "Iterable";
static const char __pyx_k_PY_BLOCK[] = "PY_BLOCK";
static const char __pyx_k_addBlock[] = "addBlock";
static const char __pyx_k_addClass[] = "addClass";
static const char __pyx_k_ancestor[] = "ancestor";
static const char __pyx_k_block_id[] = "block_id";
static const char __pyx_k_c_buffer[] = "c_buffer";
static const char __pyx_k_classify[] = "classify";
static const char __pyx_k_complete[] = "complete";
static const char __pyx_k_detector[] = "detector";
static const char __pyx_k_exist_ok[] = "exist_ok";
static const char __pyx_k_finished[] = "finished";
static const char __pyx_k_fromorig[] = "fromorig";
static const char __pyx_k_getModel[] = "getModel";
static const char __pyx_k_getNReps[] = "getNReps";
static const char __pyx_k_getNVars[] = "getNVars";
static const char __pyx_k_getScore[] = "getScore";
static const char __pyx_k_getStage[] = "getStage";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_joinpath[] = "joinpath";
static const char __pyx_k_n_scores[] = "n_scores";
static const char __pyx_k_nclasses[] = "nclasses";
static const char __pyx_k_optimize[] = "optimize";
static const char __pyx_k_original[] = "original";
static const char __pyx_k_presolve[] = "presolve";
static const char __pyx_k_priority[] = "priority";
static const char __pyx_k_pyGCGCol[] = "pyGCGCol";
static const char __pyx_k_pyx_type[] = "__pyx_type";
static const char __pyx_k_repr_png[] = "_repr_png_";
static const char __pyx_k_repr_svg[] = "_repr_svg_";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_tempfile[] = "tempfile";
static const char __pyx_k_varIndex[] = "varIndex";
static const char __pyx_k_GCGColumn[] = "GCGColumn";
static const char __pyx_k_PY_MASTER[] = "PY_MASTER";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_UNBOUNDED[] = "UNBOUNDED";
static const char __pyx_k_block1_id[] = "block1_id";
static const char __pyx_k_block2_id[] = "block2_id";
static const char __pyx_k_c_decchar[] = "c_decchar";
static const char __pyx_k_c_decinfo[] = "c_decinfo";
static const char __pyx_k_candidate[] = "candidate";
static const char __pyx_k_clocktime[] = "clocktime";
static const char __pyx_k_consIndex[] = "consIndex";
static const char __pyx_k_cpp_block[] = "cpp_block";
static const char __pyx_k_cpp_repid[] = "cpp_repid";
static const char __pyx_k_cpp_varid[] = "cpp_varid";
static const char __pyx_k_detectors[] = "detectors";
static const char __pyx_k_directory[] = "directory";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_extension[] = "extension";
static const char __pyx_k_getNConss[] = "getNConss";
static const char __pyx_k_isTrivial[] = "isTrivial";
static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_newvector[] = "newvector";
static const char __pyx_k_otherdata[] = "otherdata";
static const char __pyx_k_partition[] = "partition";
static const char __pyx_k_presolved[] = "presolved";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_read_text[] = "read_text";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_scorefree[] = "scorefree";
static const char __pyx_k_scorename[] = "scorename";
static const char __pyx_k_shortname[] = "shortname";
static const char __pyx_k_variables[] = "variables";
static const char __pyx_k_INFEASIBLE[] = "INFEASIBLE";
static const char __pyx_k_PY_LINKING[] = "PY_LINKING";
static const char __pyx_k_PY_PARTIAL[] = "PY_PARTIAL";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_blockrepid[] = "blockrepid";
static const char __pyx_k_candidates[] = "candidates";
static const char __pyx_k_classindex[] = "classindex";
static const char __pyx_k_cpp_dec_id[] = "cpp_dec_id";
static const char __pyx_k_cpp_rep_id[] = "cpp_rep_id";
static const char __pyx_k_createscip[] = "createscip";
static const char __pyx_k_decompInfo[] = "decompInfo";
static const char __pyx_k_exitSolver[] = "exitSolver";
static const char __pyx_k_freeSolver[] = "freeSolver";
static const char __pyx_k_getNBlocks[] = "getNBlocks";
static const char __pyx_k_initSolver[] = "initSolver";
static const char __pyx_k_isComplete[] = "isComplete";
static const char __pyx_k_is_enabled[] = "is_enabled";
static const char __pyx_k_listScores[] = "listScores";
static const char __pyx_k_lowerbound[] = "lowerbound";
static const char __pyx_k_mastervars[] = "mastervars";
static const char __pyx_k_nconsparts[] = "nconsparts";
static const char __pyx_k_nnewblocks[] = "nnewblocks";
static const char __pyx_k_partialdec[] = "partialdec";
static const char __pyx_k_pyx_result[] = "__pyx_result";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_read_bytes[] = "read_bytes";
static const char __pyx_k_scorevalue[] = "scorevalue";
static const char __pyx_k_setNBlocks[] = "setNBlocks";
static const char __pyx_k_solvername[] = "solvername";
static const char __pyx_k_DetProbData[] = "DetProbData";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_PY_COMPLETE[] = "PY_COMPLETE";
static const char __pyx_k_PickleError[] = "PickleError";
static const char __pyx_k_SOLVERLIMIT[] = "SOLVERLIMIT";
static const char __pyx_k_ancestor_id[] = "ancestor_id";
static const char __pyx_k_block_conss[] = "block_conss";
static const char __pyx_k_border_area[] = "border area";
static const char __pyx_k_c_directory[] = "c_directory";
static const char __pyx_k_c_extension[] = "c_extension";
static const char __pyx_k_c_scorename[] = "c_scorename";
static const char __pyx_k_c_shortname[] = "c_shortname";
static const char __pyx_k_cpp_nblocks[] = "cpp_nblocks";
static const char __pyx_k_cpp_newlist[] = "cpp_newlist";
static const char __pyx_k_detailLevel[] = "detailLevel";
static const char __pyx_k_detprobdata[] = "detprobdata";
static const char __pyx_k_displayInfo[] = "displayInfo";
static const char __pyx_k_dualsolconv[] = "dualsolconv";
static const char __pyx_k_getNClasses[] = "getNClasses";
static const char __pyx_k_getOpenvars[] = "getOpenvars";
static const char __pyx_k_getOrigvars[] = "getOrigvars";
static const char __pyx_k_isConsSetpp[] = "isConsSetpp";
static const char __pyx_k_master_prob[] = "master_prob";
static const char __pyx_k_nMasterVars[] = ", nMasterVars=";
static const char __pyx_k_n_detectors[] = "n_detectors";
static const char __pyx_k_only_master[] = "only_master";
static const char __pyx_k_partialdecs[] = "partialdecs";
static const char __pyx_k_pricingprob[] = "pricingprob";
static const char __pyx_k_with_suffix[] = "with_suffix";
static const char __pyx_k_Model_addVar[] = "Model.addVar";
static const char __pyx_k_Model_detect[] = "Model.detect";
static const char __pyx_k_PY_SCIP_CALL[] = "PY_SCIP_CALL";
static const char __pyx_k_PY_USERGIVEN[] = "PY_USERGIVEN";
static const char __pyx_k_addClockTime[] = "addClockTime";
static const char __pyx_k_c_solvername[] = "c_solvername";
static const char __pyx_k_consschanged[] = "consschanged";
static const char __pyx_k_cpp_ancestor[] = "cpp_ancestor";
static const char __pyx_k_cpp_block_id[] = "cpp_block_id";
static const char __pyx_k_cpp_finished[] = "cpp_finished";
static const char __pyx_k_cpp_fromorig[] = "cpp_fromorig";
static const char __pyx_k_cpp_varindex[] = "cpp_varindex";
static const char __pyx_k_createGcgCol[] = "createGcgCol";
static const char __pyx_k_detectorname[] = "detectorname";
static const char __pyx_k_exactEnabled[] = "exactEnabled";
static const char __pyx_k_exitDetector[] = "exitDetector";
static const char __pyx_k_exitSolution[] = "exitSolution";
static const char __pyx_k_freeDetector[] = "freeDetector";
static const char __pyx_k_getClassName[] = "getClassName";
static const char __pyx_k_getDualbound[] = "getDualbound";
static const char __pyx_k_getHashValue[] = "getHashValue";
static const char __pyx_k_getNNonzeros[] = "getNNonzeros";
static const char __pyx_k_getNOpenvars[] = "getNOpenvars";
static const char __pyx_k_getOpenconss[] = "getOpenconss";
static const char __pyx_k_getRepVarmap[] = "getRepVarmap";
static const char __pyx_k_getUsergiven[] = "getUsergiven";
static const char __pyx_k_includeScore[] = "includeScore";
static const char __pyx_k_initDetector[] = "initDetector";
static const char __pyx_k_initSolution[] = "initSolution";
static const char __pyx_k_initializing[] = "_initializing";
static const char __pyx_k_isConsSetppc[] = "isConsSetppc";
static const char __pyx_k_isVarOpenvar[] = "isVarOpenvar";
static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_is_presolved[] = "is_presolved";
static const char __pyx_k_master_conss[] = "master_conss";
static const char __pyx_k_maxcallround[] = "maxcallround";
static const char __pyx_k_mincallround[] = "mincallround";
static const char __pyx_k_nLinkingVars[] = ", nLinkingVars=";
static const char __pyx_k_nMasterConss[] = ", nMasterConss=";
static const char __pyx_k_npartialdecs[] = "npartialdecs";
static const char __pyx_k_only_pricing[] = "only_pricing";
static const char __pyx_k_originalvars[] = "originalvars";
static const char __pyx_k_printVersion[] = "printVersion";
static const char __pyx_k_pygcgopt_gcg[] = "pygcgopt.gcg";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_setBoolParam[] = "setBoolParam";
static const char __pyx_k_setClassName[] = "setClassName";
static const char __pyx_k_setParamFast[] = "setParamFast";
static const char __pyx_k_setUsergiven[] = "setUsergiven";
static const char __pyx_k_stringsource[] = "<stringsource>";
static const char __pyx_k_updateSolver[] = "updateSolver";
static const char __pyx_k_use_setstate[] = "use_setstate";
static const char __pyx_k_usefulrecall[] = "usefulrecall";
static const char __pyx_k_NOTAPPLICABLE[] = "NOTAPPLICABLE";
static const char __pyx_k_PricingSolver[] = "PricingSolver";
static const char __pyx_k_VarClassifier[] = "VarClassifier";
static const char __pyx_k_addAncestorID[] = "addAncestorID";
static const char __pyx_k_addNNewBlocks[] = "addNNewBlocks";
static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_cpp_block1_id[] = "cpp_block1_id";
static const char __pyx_k_cpp_block2_id[] = "cpp_block2_id";
static const char __pyx_k_cpp_clocktime[] = "cpp_clocktime";
static const char __pyx_k_cpp_consindex[] = "cpp_consindex";
static const char __pyx_k_cpp_newvector[] = "cpp_newvector";
static const char __pyx_k_cpp_otherdata[] = "cpp_otherdata";
static const char __pyx_k_cpp_partition[] = "cpp_partition";
static const char __pyx_k_cpp_variables[] = "cpp_variables";
static const char __pyx_k_createVarPart[] = "createVarPart";
static const char __pyx_k_deleteOpenvar[] = "deleteOpenvar";
static const char __pyx_k_det_prob_data[] = "det_prob_data";
static const char __pyx_k_detector_name[] = "detector_name";
static const char __pyx_k_firstblock_id[] = "firstblock_id";
static const char __pyx_k_freqcallround[] = "freqcallround";
static const char __pyx_k_getAllSubsets[] = "getAllSubsets";
static const char __pyx_k_getAncestorID[] = "getAncestorID";
static const char __pyx_k_getClassOfVar[] = "getClassOfVar";
static const char __pyx_k_getMasterProb[] = "getMasterProb";
static const char __pyx_k_getMastervars[] = "getMastervars";
static const char __pyx_k_getNAncestors[] = "getNAncestors";
static const char __pyx_k_getNDetectors[] = "getNDetectors";
static const char __pyx_k_getNNewBlocks[] = "getNNewBlocks";
static const char __pyx_k_getNOpenconss[] = "getNOpenconss";
static const char __pyx_k_listDetectors[] = "listDetectors";
static const char __pyx_k_ppc_max_white[] = "ppc-max-white";
static const char __pyx_k_pricingSolver[] = "pricingSolver";
static const char __pyx_k_pygcgopt_util[] = "pygcgopt.util";
static const char __pyx_k_reduceClasses[] = "reduceClasses";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_varclassifier[] = "varclassifier";
static const char __pyx_k_ConsClassifier[] = "ConsClassifier";
static const char __pyx_k_GCGMasterModel[] = "GCGMasterModel";
static const char __pyx_k_Model_optimize[] = "Model.optimize";
static const char __pyx_k_Model_presolve[] = "Model.presolve";
static const char __pyx_k_PY_ONLY_MASTER[] = "PY_ONLY_MASTER";
static const char __pyx_k_c_detectorname[] = "c_detectorname";
static const char __pyx_k_comppartialdec[] = "comppartialdec";
static const char __pyx_k_consclassifier[] = "consclassifier";
static const char __pyx_k_cpp_blockrepid[] = "cpp_blockrepid";
static const char __pyx_k_cpp_candidates[] = "cpp_candidates";
static const char __pyx_k_cpp_nnewblocks[] = "cpp_nnewblocks";
static const char __pyx_k_cpp_partialdec[] = "cpp_partialdec";
static const char __pyx_k_createConsPart[] = "createConsPart";
static const char __pyx_k_deleteOpencons[] = "deleteOpencons";
static const char __pyx_k_fixConsToBlock[] = "fixConsToBlock";
static const char __pyx_k_fixVarToMaster[] = "fixVarToMaster";
static const char __pyx_k_getClassOfCons[] = "getClassOfCons";
static const char __pyx_k_getConssForVar[] = "getConssForVar";
static const char __pyx_k_getDetprobdata[] = "getDetprobdata";
static const char __pyx_k_getIndexForVar[] = "getIndexForVar";
static const char __pyx_k_getLinkingvars[] = "getLinkingvars";
static const char __pyx_k_getMasterconss[] = "getMasterconss";
static const char __pyx_k_getNMastervars[] = "getNMastervars";
static const char __pyx_k_getRepForBlock[] = "getRepForBlock";
static const char __pyx_k_getValsForCons[] = "getValsForCons";
static const char __pyx_k_getVarsForCons[] = "getVarsForCons";
static const char __pyx_k_hasSetppMaster[] = "hasSetppMaster";
static const char __pyx_k_isConsOpencons[] = "isConsOpencons";
static const char __pyx_k_isVarMastervar[] = "isVarMastervar";
static const char __pyx_k_newpartialdecs[] = "newpartialdecs";
static const char __pyx_k_partitionIndex[] = "partitionIndex";
static const char __pyx_k_pyscipopt_scip[] = "pyscipopt.scip";
static const char __pyx_k_refineToBlocks[] = "refineToBlocks";
static const char __pyx_k_refineToMaster[] = "refineToMaster";
static const char __pyx_k_scorecalculate[] = "scorecalculate";
static const char __pyx_k_setVarToMaster[] = "setVarToMaster";
static const char __pyx_k_solveHeuristic[] = "solveHeuristic";
static const char __pyx_k_str_conversion[] = "str_conversion";
static const char __pyx_k_varbndschanged[] = "varbndschanged";
static const char __pyx_k_varclassifiers[] = "varclassifiers";
static const char __pyx_k_varobjschanged[] = "varobjschanged";
static const char __pyx_k_varpatitionptr[] = "varpatitionptr";
static const char __pyx_k_GCGPricingModel[] = "GCGPricingModel";
static const char __pyx_k_PY_ONLY_PRICING[] = "PY_ONLY_PRICING";
static const char __pyx_k_Score_scorefree[] = "Score.scorefree";
static const char __pyx_k_VarPart_getName[] = "VarPart.getName";
static const char __pyx_k_addVarPartition[] = "addVarPartition";
static const char __pyx_k_collections_abc[] = "collections.abc";
static const char __pyx_k_consclassifiers[] = "consclassifiers";
static const char __pyx_k_conspatitionptr[] = "conspatitionptr";
static const char __pyx_k_cpp_ancestor_id[] = "cpp_ancestor_id";
static const char __pyx_k_cpp_detailLevel[] = "cpp_detailLevel";
static const char __pyx_k_cpp_partialdecs[] = "cpp_partialdecs";
static const char __pyx_k_createDirectory[] = "createDirectory";
static const char __pyx_k_fixConsToMaster[] = "fixConsToMaster";
static const char __pyx_k_fixConssToBlock[] = "fixConssToBlock";
static const char __pyx_k_fixVarToLinking[] = "fixVarToLinking";
static const char __pyx_k_getAncestorList[] = "getAncestorList";
static const char __pyx_k_getBlocksForRep[] = "getBlocksForRep";
static const char __pyx_k_getConssForCons[] = "getConssForCons";
static const char __pyx_k_getIndexForCons[] = "getIndexForCons";
static const char __pyx_k_getNConssForVar[] = "getNConssForVar";
static const char __pyx_k_getNLinkingvars[] = "getNLinkingvars";
static const char __pyx_k_getNMasterconss[] = "getNMasterconss";
static const char __pyx_k_getNPartialdecs[] = "getNPartialdecs";
static const char __pyx_k_getNVarsForCons[] = "getNVarsForCons";
static const char __pyx_k_getRelevantVars[] = "getRelevantVars";
static const char __pyx_k_getVarPartition[] = "getVarPartition";
static const char __pyx_k_getVarsForBlock[] = "getVarsForBlock";
static const char __pyx_k_hasSetppcMaster[] = "hasSetppcMaster";
static const char __pyx_k_includeDetector[] = "includeDetector";
static const char __pyx_k_isVarClassified[] = "isVarClassified";
static const char __pyx_k_isVarLinkingvar[] = "isVarLinkingvar";
static const char __pyx_k_otherpartialdec[] = "otherpartialdec";
static const char __pyx_k_partialdecindex[] = "partialdecindex";
static const char __pyx_k_partialdecs_ptr[] = "partialdecs_ptr";
static const char __pyx_k_pricing_solvers[] = "pricing_solvers";
static const char __pyx_k_printStatistics[] = "printStatistics";
static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
static const char __pyx_k_setAncestorList[] = "setAncestorList";
static const char __pyx_k_setConsToMaster[] = "setConsToMaster";
static const char __pyx_k_setParamDefault[] = "setParamDefault";
static const char __pyx_k_setVarToBlockId[] = "setVarToBlockId";
static const char __pyx_k_setVarToLinking[] = "setVarToLinking";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_translatingtime[] = "translatingtime";
static const char __pyx_k_writeAllDecomps[] = "writeAllDecomps";
static const char __pyx_k_ConsPart_getName[] = "ConsPart.getName";
static const char __pyx_k_Model_listScores[] = "Model.listScores";
static const char __pyx_k_VarPart_addClass[] = "VarPart.addClass";
static const char __pyx_k_VarPart_getNVars[] = "VarPart.getNVars";
static const char __pyx_k_addConsPartition[] = "addConsPartition";
static const char __pyx_k_addDecomposition[] = "addDecomposition";
static const char __pyx_k_assignVarToClass[] = "assignVarToClass";
static const char __pyx_k_checkConsistency[] = "checkConsistency";
static const char __pyx_k_completeGreedily[] = "completeGreedily";
static const char __pyx_k_detectorchain_id[] = "detectorchain_id";
static const char __pyx_k_enabledfinishing[] = "enabledfinishing";
static const char __pyx_k_finishPartialdec[] = "finishPartialdec";
static const char __pyx_k_fixConsToBlockId[] = "fixConsToBlockId";
static const char __pyx_k_fixConssToMaster[] = "fixConssToMaster";
static const char __pyx_k_getConsPartition[] = "getConsPartition";
static const char __pyx_k_getConssForBlock[] = "getConssForBlock";
static const char __pyx_k_getNConssForCons[] = "getNConssForCons";
static const char __pyx_k_getNVarsForBlock[] = "getNVarsForBlock";
static const char __pyx_k_getRelevantConss[] = "getRelevantConss";
static const char __pyx_k_getVarPartitions[] = "getVarPartitions";
static const char __pyx_k_heuristicEnabled[] = "heuristicEnabled";
static const char __pyx_k_isConsClassified[] = "isConsClassified";
static const char __pyx_k_isConsMastercons[] = "isConsMastercons";
static const char __pyx_k_maxForWhiteScore[] = ", maxForWhiteScore=";
static const char __pyx_k_n_varclassifiers[] = "n_varclassifiers";
static const char __pyx_k_otherpartialdecs[] = "otherpartialdecs";
static const char __pyx_k_removeAncestorID[] = "removeAncestorID";
static const char __pyx_k_removeMastercons[] = "removeMastercons";
static const char __pyx_k_setGCGSeparating[] = "setGCGSeparating";
static const char __pyx_k_setStemsFromOrig[] = "setStemsFromOrig";
static const char __pyx_k_varclassesmaster[] = "varclassesmaster";
static const char __pyx_k_workonpartialdec[] = "workonpartialdec";
static const char __pyx_k_ConsPart_addClass[] = "ConsPart.addClass";
static const char __pyx_k_PY_VAR_DECOMPINFO[] = "PY_VAR_DECOMPINFO";
static const char __pyx_k_addPctVarsToBlock[] = "addPctVarsToBlock";
static const char __pyx_k_aggInfoCalculated[] = "aggInfoCalculated";
static const char __pyx_k_alldecompositions[] = "alldecompositions/";
static const char __pyx_k_assignConsToClass[] = "assignConsToClass";
static const char __pyx_k_candidatesNBlocks[] = "candidatesNBlocks";
static const char __pyx_k_consclassesmaster[] = "consclassesmaster";
static const char __pyx_k_considerImplicits[] = "considerImplicits";
static const char __pyx_k_cpp_firstblock_id[] = "cpp_firstblock_id";
static const char __pyx_k_deleteEmptyBlocks[] = "deleteEmptyBlocks";
static const char __pyx_k_fixConssToBlockId[] = "fixConssToBlockId";
static const char __pyx_k_freeTemporaryData[] = "freeTemporaryData";
static const char __pyx_k_freeVarClassifier[] = "freeVarClassifier";
static const char __pyx_k_getClassNameOfVar[] = "getClassNameOfVar";
static const char __pyx_k_getConsPartitions[] = "getConsPartitions";
static const char __pyx_k_getConssForBlocks[] = "getConssForBlocks";
static const char __pyx_k_getNConssForBlock[] = "getNConssForBlock";
static const char __pyx_k_getNVarPartitions[] = "getNVarPartitions";
static const char __pyx_k_getNVarsForBlocks[] = "getNVarsForBlocks";
static const char __pyx_k_getNVarsOfClasses[] = "getNVarsOfClasses";
static const char __pyx_k_getPctVarsToBlock[] = "getPctVarsToBlock";
static const char __pyx_k_n_consclassifiers[] = "n_consclassifiers";
static const char __pyx_k_n_pricing_solvers[] = "n_pricing_solvers";
static const char __pyx_k_showVisualization[] = "showVisualization";
static const char __pyx_k_varclasseslinking[] = "varclasseslinking";
static const char __pyx_k_varclassifiername[] = "varclassifiername";
static const char __pyx_k_ConsPart_getNConss[] = "ConsPart.getNConss";
static const char __pyx_k_DetProbData_getVal[] = "DetProbData.getVal";
static const char __pyx_k_DetProbData_getVar[] = "DetProbData.getVar";
static const char __pyx_k_Model_getDualbound[] = "Model.getDualbound";
static const char __pyx_k_Model_includeScore[] = "Model.includeScore";
static const char __pyx_k_Model_printVersion[] = "Model.printVersion";
static const char __pyx_k_PY_CONS_DECOMPINFO[] = "PY_CONS_DECOMPINFO";
static const char __pyx_k_TemporaryDirectory[] = "TemporaryDirectory";
static const char __pyx_k_addPctConssToBlock[] = "addPctConssToBlock";
static const char __pyx_k_addPctVarsFromFree[] = "addPctVarsFromFree";
static const char __pyx_k_addPctVarsToBorder[] = "addPctVarsToBorder";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_classificationtime[] = "classificationtime";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_consclassifiername[] = "consclassifiername";
static const char __pyx_k_cpp_comppartialdec[] = "cpp_comppartialdec";
static const char __pyx_k_detectorchainindex[] = "detectorchainindex";
static const char __pyx_k_freeConsClassifier[] = "freeConsClassifier";
static const char __pyx_k_getClassDecompInfo[] = "getClassDecompInfo";
static const char __pyx_k_getClassNameOfCons[] = "getClassNameOfCons";
static const char __pyx_k_getDetprobdataOrig[] = "getDetprobdataOrig";
static const char __pyx_k_getNCoeffsForBlock[] = "getNCoeffsForBlock";
static const char __pyx_k_getNConsPartitions[] = "getNConsPartitions";
static const char __pyx_k_getNConssOfClasses[] = "getNConssOfClasses";
static const char __pyx_k_getNVarClassifiers[] = "getNVarClassifiers";
static const char __pyx_k_getOpenPartialdecs[] = "getOpenPartialdecs";
static const char __pyx_k_getPctConssToBlock[] = "getPctConssToBlock";
static const char __pyx_k_getPctVarsFromFree[] = "getPctVarsFromFree";
static const char __pyx_k_getPctVarsToBorder[] = "getPctVarsToBorder";
static const char __pyx_k_listDecompositions[] = "listDecompositions";
static const char __pyx_k_listPricingSolvers[] = "listPricingSolvers";
static const char __pyx_k_listVarClassifiers[] = "listVarClassifiers";
static const char __pyx_k_maxForWhiteScore_2[] = "maxForWhiteScore";
static const char __pyx_k_maxNumberOfClasses[] = "maxNumberOfClasses";
static const char __pyx_k_postprocessingtime[] = "postprocessingtime";
static const char __pyx_k_pyx_unpickle_Score[] = "__pyx_unpickle_Score";
static const char __pyx_k_removeEmptyClasses[] = "removeEmptyClasses";
static const char __pyx_k_setClassDecompInfo[] = "setClassDecompInfo";
static const char __pyx_k_setDetectorEnabled[] = "setDetectorEnabled";
static const char __pyx_k_setParamAggressive[] = "setParamAggressive";
static const char __pyx_k_varclassifier_name[] = "varclassifier_name";
static const char __pyx_k_DetProbData_getCons[] = "DetProbData.getCons";
static const char __pyx_k_Model_getMasterProb[] = "Model.getMasterProb";
static const char __pyx_k_Model_getMastervars[] = "Model.getMastervars";
static const char __pyx_k_Model_listDetectors[] = "Model.listDetectors";
static const char __pyx_k_PricingSolver_solve[] = "PricingSolver.solve";
static const char __pyx_k_VarPart_getNClasses[] = "VarPart.getNClasses";
static const char __pyx_k_addPartialdecToOpen[] = "addPartialdecToOpen";
static const char __pyx_k_addPctConssFromFree[] = "addPctConssFromFree";
static const char __pyx_k_addPctConssToBorder[] = "addPctConssToBorder";
static const char __pyx_k_buildDecChainString[] = "buildDecChainString";
static const char __pyx_k_c_varclassifiername[] = "c_varclassifiername";
static const char __pyx_k_completeByConnected[] = "completeByConnected";
static const char __pyx_k_cpp_otherpartialdec[] = "cpp_otherpartialdec";
static const char __pyx_k_cpp_translatingtime[] = "cpp_translatingtime";
static const char __pyx_k_createDecomposition[] = "createDecomposition";
static const char __pyx_k_getClassDescription[] = "getClassDescription";
static const char __pyx_k_getNCoeffsForMaster[] = "getNCoeffsForMaster";
static const char __pyx_k_getNConsClassifiers[] = "getNConsClassifiers";
static const char __pyx_k_getNNewBlocksVector[] = "getNNewBlocksVector";
static const char __pyx_k_getNOpenPartialdecs[] = "getNOpenPartialdecs";
static const char __pyx_k_getPartDecompFromID[] = "getPartDecompFromID";
static const char __pyx_k_getPctConssFromFree[] = "getPctConssFromFree";
static const char __pyx_k_getPctConssToBorder[] = "getPctConssToBorder";
static const char __pyx_k_hasSetppccardMaster[] = "hasSetppccardMaster";
static const char __pyx_k_listConsClassifiers[] = "listConsClassifiers";
static const char __pyx_k_partialdecs_element[] = "partialdecs_element";
static const char __pyx_k_pricing_solver_name[] = "pricing_solver_name";
static const char __pyx_k_propagatePartialdec[] = "propagatePartialdec";
static const char __pyx_k_setClassDescription[] = "setClassDescription";
static const char __pyx_k_setDetectorFinished[] = "setDetectorFinished";
static const char __pyx_k_ConsPart_getNClasses[] = "ConsPart.getNClasses";
static const char __pyx_k_DetProbData_getModel[] = "DetProbData.getModel";
static const char __pyx_k_DetProbData_getNVars[] = "DetProbData.getNVars";
static const char __pyx_k_PY_GCG_PRICINGSTATUS[] = "PY_GCG_PRICINGSTATUS";
static const char __pyx_k_PartialDecomposition[] = "PartialDecomposition";
static const char __pyx_k_Score_scorecalculate[] = "Score.scorecalculate";
static const char __pyx_k_VarPart_getClassName[] = "VarPart.getClassName";
static const char __pyx_k_VarPart_setClassName[] = "VarPart.setClassName";
static const char __pyx_k_addDetectorChainInfo[] = "addDetectorChainInfo";
static const char __pyx_k_c_consclassifiername[] = "c_consclassifiername";
static const char __pyx_k_calcStairlinkingVars[] = "calcStairlinkingVars";
static const char __pyx_k_cpp_detectorchain_id[] = "cpp_detectorchain_id";
static const char __pyx_k_cpp_otherpartialdecs[] = "cpp_otherpartialdecs";
static const char __pyx_k_cpp_varclassesmaster[] = "cpp_varclassesmaster";
static const char __pyx_k_createConssAdjacency[] = "createConssAdjacency";
static const char __pyx_k_fixVarToStairlinking[] = "fixVarToStairlinking";
static const char __pyx_k_getDetectorClockTime[] = "getDetectorClockTime";
static const char __pyx_k_getDetectorchainInfo[] = "getDetectorchainInfo";
static const char __pyx_k_getNStairlinkingvars[] = "getNStairlinkingvars";
static const char __pyx_k_getOrigVarsFixedZero[] = "getOrigVarsFixedZero";
static const char __pyx_k_includePricingSolver[] = "includePricingSolver";
static const char __pyx_k_includeVarClassifier[] = "includeVarClassifier";
static const char __pyx_k_isAssignedToOrigProb[] = "isAssignedToOrigProb";
static const char __pyx_k_isVarBlockvarOfBlock[] = "isVarBlockvarOfBlock";
static const char __pyx_k_isVarStairlinkingvar[] = "isVarStairlinkingvar";
static const char __pyx_k_max_foreseeing_white[] = "max foreseeing white";
static const char __pyx_k_maxcallroundoriginal[] = "maxcallroundoriginal";
static const char __pyx_k_mincallroundoriginal[] = "mincallroundoriginal";
static const char __pyx_k_otherpartialdecs_ptr[] = "otherpartialdecs_ptr";
static const char __pyx_k_setVarToStairlinking[] = "setVarToStairlinking";
static const char __pyx_k_sortFinishedForScore[] = "sortFinishedForScore";
static const char __pyx_k_src_pygcgopt_gcg_pyx[] = "src/pygcgopt/gcg.pyx";
static const char __pyx_k_translatePartialdecs[] = "translatePartialdecs";
static const char __pyx_k_ConsPart_getClassName[] = "ConsPart.getClassName";
static const char __pyx_k_ConsPart_setClassName[] = "ConsPart.setClassName";
static const char __pyx_k_DetProbData_getNConss[] = "DetProbData.getNConss";
static const char __pyx_k_Detector_exitDetector[] = "Detector.exitDetector";
static const char __pyx_k_Detector_freeDetector[] = "Detector.freeDetector";
static const char __pyx_k_Detector_initDetector[] = "Detector.initDetector";
static const char __pyx_k_Detector_setParamFast[] = "Detector.setParamFast";
static const char __pyx_k_GCGMasterModel_addCol[] = "GCGMasterModel.addCol";
static const char __pyx_k_Model___reduce_cython[] = "Model.__reduce_cython__";
static const char __pyx_k_Model_includeDetector[] = "Model.includeDetector";
static const char __pyx_k_Model_printStatistics[] = "Model.printStatistics";
static const char __pyx_k_Model_writeAllDecomps[] = "Model.writeAllDecomps";
static const char __pyx_k_Score___reduce_cython[] = "Score.__reduce_cython__";
static const char __pyx_k_VarPart_getAllSubsets[] = "VarPart.getAllSubsets";
static const char __pyx_k_VarPart_getClassOfVar[] = "VarPart.getClassOfVar";
static const char __pyx_k_VarPart_reduceClasses[] = "VarPart.reduceClasses";
static const char __pyx_k_checkAllConssAssigned[] = "checkAllConssAssigned";
static const char __pyx_k_cpp_candidatesNBlocks[] = "cpp_candidatesNBlocks";
static const char __pyx_k_cpp_consclassesmaster[] = "cpp_consclassesmaster";
static const char __pyx_k_cpp_varclasseslinking[] = "cpp_varclasseslinking";
static const char __pyx_k_enabledpostprocessing[] = "enabledpostprocessing";
static const char __pyx_k_freqcallroundoriginal[] = "freqcallroundoriginal";
static const char __pyx_k_getAncestorPartialdec[] = "getAncestorPartialdec";
static const char __pyx_k_getDetectorClockTimes[] = "getDetectorClockTimes";
static const char __pyx_k_getFinishedByFinisher[] = "getFinishedByFinisher";
static const char __pyx_k_getFinishedPartialdec[] = "getFinishedPartialdec";
static const char __pyx_k_ignoreDetectionLimits[] = "ignoreDetectionLimits";
static const char __pyx_k_includeConsClassifier[] = "includeConsClassifier";
static const char __pyx_k_includeDefaultPlugins[] = "includeDefaultPlugins";
static const char __pyx_k_isConsCardinalityCons[] = "isConsCardinalityCons";
static const char __pyx_k_isConssAdjInitialized[] = "isConssAdjInitialized";
static const char __pyx_k_postprocessPartialdec[] = "postprocessPartialdec";
static const char __pyx_k_pyx_unpickle_Detector[] = "__pyx_unpickle_Detector";
static const char __pyx_k_setDetectorClockTimes[] = "setDetectorClockTimes";
static const char __pyx_k_setDetectorPropagated[] = "setDetectorPropagated";
static const char __pyx_k_setFinishedByFinisher[] = "setFinishedByFinisher";
static const char __pyx_k_ConsPart_getAllSubsets[] = "ConsPart.getAllSubsets";
static const char __pyx_k_ConsPart_reduceClasses[] = "ConsPart.reduceClasses";
static const char __pyx_k_Model_addDecomposition[] = "Model.addDecomposition";
static const char __pyx_k_Model_setGCGSeparating[] = "Model.setGCGSeparating";
static const char __pyx_k_VarClassifier_classify[] = "VarClassifier.classify";
static const char __pyx_k_cpp_classificationtime[] = "cpp_classificationtime";
static const char __pyx_k_cpp_detectorchainindex[] = "cpp_detectorchainindex";
static const char __pyx_k_cpp_postprocessingtime[] = "cpp_postprocessingtime";
static const char __pyx_k_getFinishedPartialdecs[] = "getFinishedPartialdecs";
static const char __pyx_k_src_pygcgopt_score_pxi[] = "src/pygcgopt/score.pxi";
static const char __pyx_k_varpartitioncollection[] = "varpartitioncollection";
static const char __pyx_k_ConsClassifier_classify[] = "ConsClassifier.classify";
static const char __pyx_k_ConsPart_getClassOfCons[] = "ConsPart.getClassOfCons";
static const char __pyx_k_DetProbData_isConsSetpp[] = "DetProbData.isConsSetpp";
static const char __pyx_k_Model___setstate_cython[] = "Model.__setstate_cython__";
static const char __pyx_k_Score___setstate_cython[] = "Score.__setstate_cython__";
static const char __pyx_k_VarPart___reduce_cython[] = "VarPart.__reduce_cython__";
static const char __pyx_k_VarPart_isVarClassified[] = "VarPart.isVarClassified";
static const char __pyx_k_addPartialdecToAncestor[] = "addPartialdecToAncestor";
static const char __pyx_k_addPartialdecToFinished[] = "addPartialdecToFinished";
static const char __pyx_k_assignOpenConssToMaster[] = "assignOpenConssToMaster";
static const char __pyx_k_clearCurrentPartialdecs[] = "clearCurrentPartialdecs";
static const char __pyx_k_conspartitioncollection[] = "conspartitioncollection";
static const char __pyx_k_copyPartitionStatistics[] = "copyPartitionStatistics";
static const char __pyx_k_findVarsLinkingToMaster[] = "findVarsLinkingToMaster";
static const char __pyx_k_getDetprobdataPresolved[] = "getDetprobdataPresolved";
static const char __pyx_k_getNAncestorPartialdecs[] = "getNAncestorPartialdecs";
static const char __pyx_k_getNFinishedPartialdecs[] = "getNFinishedPartialdecs";
static const char __pyx_k_getPctVarsToBlockVector[] = "getPctVarsToBlockVector";
static const char __pyx_k_getVarProbindexForBlock[] = "getVarProbindexForBlock";
static const char __pyx_k_setDetectorFinishedOrig[] = "setDetectorFinishedOrig";
static const char __pyx_k_setPctVarsToBlockVector[] = "setPctVarsToBlockVector";
static const char __pyx_k_setPricingSolverEnabled[] = "setPricingSolverEnabled";
static const char __pyx_k_setVarClassifierEnabled[] = "setVarClassifierEnabled";
static const char __pyx_k_ConsPart___reduce_cython[] = "ConsPart.__reduce_cython__";
static const char __pyx_k_DetProbData_getNNonzeros[] = "DetProbData.getNNonzeros";
static const char __pyx_k_DetProbData_isConsSetppc[] = "DetProbData.isConsSetppc";
static const char __pyx_k_Detector___reduce_cython[] = "Detector.__reduce_cython__";
static const char __pyx_k_Detector_setParamDefault[] = "Detector.setParamDefault";
static const char __pyx_k_Model_getDetprobdataOrig[] = "Model.getDetprobdataOrig";
static const char __pyx_k_Model_getNVarClassifiers[] = "Model.getNVarClassifiers";
static const char __pyx_k_Model_listDecompositions[] = "Model.listDecompositions";
static const char __pyx_k_Model_listPricingSolvers[] = "Model.listPricingSolvers";
static const char __pyx_k_Model_listVarClassifiers[] = "Model.listVarClassifiers";
static const char __pyx_k_Model_setDetectorEnabled[] = "Model.setDetectorEnabled";
static const char __pyx_k_PricingSolver_exitSolver[] = "PricingSolver.exitSolver";
static const char __pyx_k_PricingSolver_freeSolver[] = "PricingSolver.freeSolver";
static const char __pyx_k_PricingSolver_initSolver[] = "PricingSolver.initSolver";
static const char __pyx_k_VarPart_assignVarToClass[] = "VarPart.assignVarToClass";
static const char __pyx_k_clearAncestorPartialdecs[] = "clearAncestorPartialdecs";
static const char __pyx_k_clearFinishedPartialdecs[] = "clearFinishedPartialdecs";
static const char __pyx_k_getPctConssToBlockVector[] = "getPctConssToBlockVector";
static const char __pyx_k_getPctVarsFromFreeVector[] = "getPctVarsFromFreeVector";
static const char __pyx_k_getPctVarsToBorderVector[] = "getPctVarsToBorderVector";
static const char __pyx_k_otherpartialdecs_element[] = "otherpartialdecs_element";
static const char __pyx_k_setPctConssToBlockVector[] = "setPctConssToBlockVector";
static const char __pyx_k_setPctVarsFromFreeVector[] = "setPctVarsFromFreeVector";
static const char __pyx_k_setPctVarsToBorderVector[] = "setPctVarsToBorderVector";
static const char __pyx_k_ConsPart_isConsClassified[] = "ConsPart.isConsClassified";
static const char __pyx_k_DetProbData_createVarPart[] = "DetProbData.createVarPart";
static const char __pyx_k_Detector_finishPartialdec[] = "Detector.finishPartialdec";
static const char __pyx_k_GCGColumn___reduce_cython[] = "GCGColumn.__reduce_cython__";
static const char __pyx_k_Model_createDecomposition[] = "Model.createDecomposition";
static const char __pyx_k_Model_getNConsClassifiers[] = "Model.getNConsClassifiers";
static const char __pyx_k_Model_getPartDecompFromID[] = "Model.getPartDecompFromID";
static const char __pyx_k_Model_listConsClassifiers[] = "Model.listConsClassifiers";
static const char __pyx_k_PY_COMPLETED_CONSTOMASTER[] = "PY_COMPLETED_CONSTOMASTER";
static const char __pyx_k_PartialDecomposition_copy[] = "PartialDecomposition.copy";
static const char __pyx_k_PartialDecomposition_sort[] = "PartialDecomposition.sort";
static const char __pyx_k_VarPart___setstate_cython[] = "VarPart.__setstate_cython__";
static const char __pyx_k_VarPart_getClassNameOfVar[] = "VarPart.getClassNameOfVar";
static const char __pyx_k_VarPart_getNVarsOfClasses[] = "VarPart.getNVarsOfClasses";
static const char __pyx_k_addDecChangesFromAncestor[] = "addDecChangesFromAncestor";
static const char __pyx_k_addDecompositionFromConss[] = "addDecompositionFromConss";
static const char __pyx_k_assignCurrentStairlinking[] = "assignCurrentStairlinking";
static const char __pyx_k_cpp_ignoreDetectionLimits[] = "cpp_ignoreDetectionLimits";
static const char __pyx_k_getNTotalStairlinkingvars[] = "getNTotalStairlinkingvars";
static const char __pyx_k_getPctConssFromFreeVector[] = "getPctConssFromFreeVector";
static const char __pyx_k_getPctConssToBorderVector[] = "getPctConssToBorderVector";
static const char __pyx_k_getTranslatedpartialdecid[] = "getTranslatedpartialdecid";
static const char __pyx_k_nblockscandidatescalctime[] = "nblockscandidatescalctime";
static const char __pyx_k_pricingsolver_heurenabled[] = "pricingsolver/{}/heurenabled";
static const char __pyx_k_pyx_unpickle_PY_USERGIVEN[] = "__pyx_unpickle_PY_USERGIVEN";
static const char __pyx_k_setFinishedByFinisherOrig[] = "setFinishedByFinisherOrig";
static const char __pyx_k_setPctConssFromFreeVector[] = "setPctConssFromFreeVector";
static const char __pyx_k_setPctConssToBorderVector[] = "setPctConssToBorderVector";
static const char __pyx_k_setTranslatedpartialdecid[] = "setTranslatedpartialdecid";
static const char __pyx_k_setVarPartitionStatistics[] = "setVarPartitionStatistics";
static const char __pyx_k_src_pygcgopt_detector_pxi[] = "src/pygcgopt/detector.pxi";
static const char __pyx_k_ConsPart___setstate_cython[] = "ConsPart.__setstate_cython__";
static const char __pyx_k_ConsPart_assignConsToClass[] = "ConsPart.assignConsToClass";
static const char __pyx_k_DetProbData_createConsPart[] = "DetProbData.createConsPart";
static const char __pyx_k_DetProbData_getConssForVar[] = "DetProbData.getConssForVar";
static const char __pyx_k_DetProbData_getIndexForVar[] = "DetProbData.getIndexForVar";
static const char __pyx_k_DetProbData_getValsForCons[] = "DetProbData.getValsForCons";
static const char __pyx_k_DetProbData_getVarsForCons[] = "DetProbData.getVarsForCons";
static const char __pyx_k_Detector___setstate_cython[] = "Detector.__setstate_cython__";
static const char __pyx_k_GCGMasterModel_getOrigvars[] = "GCGMasterModel.getOrigvars";
static const char __pyx_k_Model_includePricingSolver[] = "Model.includePricingSolver";
static const char __pyx_k_Model_includeVarClassifier[] = "Model.includeVarClassifier";
static const char __pyx_k_PartialDecomposition_getID[] = "PartialDecomposition.getID";
static const char __pyx_k_PricingSolver_exitSolution[] = "PricingSolver.exitSolution";
static const char __pyx_k_PricingSolver_initSolution[] = "PricingSolver.initSolution";
static const char __pyx_k_PricingSolver_updateSolver[] = "PricingSolver.updateSolver";
static const char __pyx_k_VarPart_getClassDecompInfo[] = "VarPart.getClassDecompInfo";
static const char __pyx_k_VarPart_removeEmptyClasses[] = "VarPart.removeEmptyClasses";
static const char __pyx_k_VarPart_setClassDecompInfo[] = "VarPart.setClassDecompInfo";
static const char __pyx_k_addCandidatesNBlocksNVotes[] = "addCandidatesNBlocksNVotes";
static const char __pyx_k_calcAggregationInformation[] = "calcAggregationInformation";
static const char __pyx_k_cpp_varpartitioncollection[] = "cpp_varpartitioncollection";
static const char __pyx_k_experimental_benders_score[] = "experimental benders score";
static const char __pyx_k_getSortedCandidatesNBlocks[] = "getSortedCandidatesNBlocks";
static const char __pyx_k_pricingsolver_exactenabled[] = "pricingsolver/{}/exactenabled";
static const char __pyx_k_pyx_unpickle_PricingSolver[] = "__pyx_unpickle_PricingSolver";
static const char __pyx_k_pyx_unpickle_VarClassifier[] = "__pyx_unpickle_VarClassifier";
static const char __pyx_k_setConsPartitionStatistics[] = "setConsPartitionStatistics";
static const char __pyx_k_src_pygcgopt_partition_pxi[] = "src/pygcgopt/partition.pxi";
static const char __pyx_k_strong_decomposition_score[] = "strong decomposition score";
static const char __pyx_k_varpartitioncollection_ptr[] = "varpartitioncollection_ptr";
static const char __pyx_k_ConsPart_getClassDecompInfo[] = "ConsPart.getClassDecompInfo";
static const char __pyx_k_ConsPart_getClassNameOfCons[] = "ConsPart.getClassNameOfCons";
static const char __pyx_k_ConsPart_getNConssOfClasses[] = "ConsPart.getNConssOfClasses";
static const char __pyx_k_ConsPart_removeEmptyClasses[] = "ConsPart.removeEmptyClasses";
static const char __pyx_k_ConsPart_setClassDecompInfo[] = "ConsPart.setClassDecompInfo";
static const char __pyx_k_DetProbData___reduce_cython[] = "DetProbData.__reduce_cython__";
static const char __pyx_k_DetProbData_addVarPartition[] = "DetProbData.addVarPartition";
static const char __pyx_k_DetProbData_getConssForCons[] = "DetProbData.getConssForCons";
static const char __pyx_k_DetProbData_getIndexForCons[] = "DetProbData.getIndexForCons";
static const char __pyx_k_DetProbData_getNConssForVar[] = "DetProbData.getNConssForVar";
static const char __pyx_k_DetProbData_getNPartialdecs[] = "DetProbData.getNPartialdecs";
static const char __pyx_k_DetProbData_getNVarsForCons[] = "DetProbData.getNVarsForCons";
static const char __pyx_k_DetProbData_getRelevantVars[] = "DetProbData.getRelevantVars";
static const char __pyx_k_DetProbData_getVarPartition[] = "DetProbData.getVarPartition";
static const char __pyx_k_DetProbData_translatingtime[] = "DetProbData.translatingtime";
static const char __pyx_k_Detector_setParamAggressive[] = "Detector.setParamAggressive";
static const char __pyx_k_GCGColumn___setstate_cython[] = "GCGColumn.__setstate_cython__";
static const char __pyx_k_Model_includeConsClassifier[] = "Model.includeConsClassifier";
static const char __pyx_k_Model_includeDefaultPlugins[] = "Model.includeDefaultPlugins";
static const char __pyx_k_PartialDecomposition___copy[] = "PartialDecomposition.__copy__";
static const char __pyx_k_VarPart_getClassDescription[] = "VarPart.getClassDescription";
static const char __pyx_k_VarPart_setClassDescription[] = "VarPart.setClassDescription";
static const char __pyx_k_conspartitioncollection_ptr[] = "conspartitioncollection_ptr";
static const char __pyx_k_cpp_conspartitioncollection[] = "cpp_conspartitioncollection";
static const char __pyx_k_detection_detectors_enabled[] = "detection/detectors/{}/enabled";
static const char __pyx_k_isVarStairlinkingvarOfBlock[] = "isVarStairlinkingvarOfBlock";
static const char __pyx_k_pyx_unpickle_ConsClassifier[] = "__pyx_unpickle_ConsClassifier";
static const char __pyx_k_setDetectorFinishingEnabled[] = "setDetectorFinishingEnabled";
static const char __pyx_k_ConsPart_getClassDescription[] = "ConsPart.getClassDescription";
static const char __pyx_k_ConsPart_setClassDescription[] = "ConsPart.setClassDescription";
static const char __pyx_k_DetProbData_addConsPartition[] = "DetProbData.addConsPartition";
static const char __pyx_k_DetProbData_getConsPartition[] = "DetProbData.getConsPartition";
static const char __pyx_k_DetProbData_getNConssForCons[] = "DetProbData.getNConssForCons";
static const char __pyx_k_DetProbData_getRelevantConss[] = "DetProbData.getRelevantConss";
static const char __pyx_k_DetProbData_getVarPartitions[] = "DetProbData.getVarPartitions";
static const char __pyx_k_Detector_propagatePartialdec[] = "Detector.propagatePartialdec";
static const char __pyx_k_GCGPricingModel_createGcgCol[] = "GCGPricingModel.createGcgCol";
static const char __pyx_k_PY_USERGIVEN___reduce_cython[] = "PY_USERGIVEN.__reduce_cython__";
static const char __pyx_k_PartialDecomposition_nBlocks[] = "<PartialDecomposition: nBlocks=";
static const char __pyx_k_PartialDecomposition_prepare[] = "PartialDecomposition.prepare";
static const char __pyx_k_PricingSolver_solveHeuristic[] = "PricingSolver.solveHeuristic";
static const char __pyx_k_alreadyAssignedConssToBlocks[] = "alreadyAssignedConssToBlocks";
static const char __pyx_k_setPricingSolverExactEnabled[] = "setPricingSolverExactEnabled";
static const char __pyx_k_src_pygcgopt_detprobdata_pxi[] = "src/pygcgopt/detprobdata.pxi";
static const char __pyx_k_DetProbData___setstate_cython[] = "DetProbData.__setstate_cython__";
static const char __pyx_k_DetProbData_candidatesNBlocks[] = "DetProbData.candidatesNBlocks";
static const char __pyx_k_DetProbData_freeTemporaryData[] = "DetProbData.freeTemporaryData";
static const char __pyx_k_DetProbData_getConsPartitions[] = "DetProbData.getConsPartitions";
static const char __pyx_k_DetProbData_getNVarPartitions[] = "DetProbData.getNVarPartitions";
static const char __pyx_k_Model_getDetprobdataPresolved[] = "Model.getDetprobdataPresolved";
static const char __pyx_k_Model_setPricingSolverEnabled[] = "Model.setPricingSolverEnabled";
static const char __pyx_k_Model_setVarClassifierEnabled[] = "Model.setVarClassifierEnabled";
static const char __pyx_k_PartialDecomposition_addBlock[] = "PartialDecomposition.addBlock";
static const char __pyx_k_PartialDecomposition_complete[] = "PartialDecomposition.complete";
static const char __pyx_k_PartialDecomposition_getNReps[] = "PartialDecomposition.getNReps";
static const char __pyx_k_PartialDecomposition_getNVars[] = "PartialDecomposition.getNVars";
static const char __pyx_k_PartialDecomposition_getScore[] = "PartialDecomposition.getScore";
static const char __pyx_k_PricingSolver___reduce_cython[] = "PricingSolver.__reduce_cython__";
static const char __pyx_k_VarClassifier___reduce_cython[] = "VarClassifier.__reduce_cython__";
static const char __pyx_k_cpp_nblockscandidatescalctime[] = "cpp_nblockscandidatescalctime";
static const char __pyx_k_findVarsLinkingToStairlinking[] = "findVarsLinkingToStairlinking";
static const char __pyx_k_shouldCompletedByConsToMaster[] = "shouldCompletedByConsToMaster";
static const char __pyx_k_ConsClassifier___reduce_cython[] = "ConsClassifier.__reduce_cython__";
static const char __pyx_k_DetProbData_classificationtime[] = "DetProbData.classificationtime";
static const char __pyx_k_DetProbData_getNConsPartitions[] = "DetProbData.getNConsPartitions";
static const char __pyx_k_DetProbData_getOpenPartialdecs[] = "DetProbData.getOpenPartialdecs";
static const char __pyx_k_DetProbData_postprocessingtime[] = "DetProbData.postprocessingtime";
static const char __pyx_k_Detector_postprocessPartialdec[] = "Detector.postprocessPartialdec";
static const char __pyx_k_GCGMasterModel___reduce_cython[] = "GCGMasterModel.__reduce_cython__";
static const char __pyx_k_PY_USERGIVEN___setstate_cython[] = "PY_USERGIVEN.__setstate_cython__";
static const char __pyx_k_PartialDecomposition__repr_png[] = "PartialDecomposition._repr_png_";
static const char __pyx_k_PartialDecomposition__repr_svg[] = "PartialDecomposition._repr_svg_";
static const char __pyx_k_PartialDecomposition_getNConss[] = "PartialDecomposition.getNConss";
static const char __pyx_k_PartialDecomposition_isTrivial[] = "PartialDecomposition.isTrivial";
static const char __pyx_k_pyx_unpickle_PY_CONS_DECOMPINF[] = "__pyx_unpickle_PY_CONS_DECOMPINFO";
static const char __pyx_k_pyx_unpickle_PY_GCG_PRICINGSTA[] = "__pyx_unpickle_PY_GCG_PRICINGSTATUS";
static const char __pyx_k_pyx_unpickle_PY_VAR_DECOMPINFO[] = "__pyx_unpickle_PY_VAR_DECOMPINFO";
static const char __pyx_k_src_pygcgopt_decomposition_pxi[] = "src/pygcgopt/decomposition.pxi";
static const char __pyx_k_src_pygcgopt_varclassifier_pxi[] = "src/pygcgopt/varclassifier.pxi";
static const char __pyx_k_varpartitioncollection_element[] = "varpartitioncollection_element";
static const char __pyx_k_DetProbData_addPartialdecToOpen[] = "DetProbData.addPartialdecToOpen";
static const char __pyx_k_DetProbData_getNOpenPartialdecs[] = "DetProbData.getNOpenPartialdecs";
static const char __pyx_k_GCGPricingModel___reduce_cython[] = "GCGPricingModel.__reduce_cython__";
static const char __pyx_k_Model_addDecompositionFromConss[] = "Model.addDecompositionFromConss";
static const char __pyx_k_PY_GCG_PRICINGSTATUS___setstate[] = "PY_GCG_PRICINGSTATUS.__setstate_cython__";
static const char __pyx_k_PartialDecomposition___setstate[] = "PartialDecomposition.__setstate_cython__";
static const char __pyx_k_PartialDecomposition_getNBlocks[] = "PartialDecomposition.getNBlocks";
static const char __pyx_k_PartialDecomposition_isComplete[] = "PartialDecomposition.isComplete";
static const char __pyx_k_PartialDecomposition_setNBlocks[] = "PartialDecomposition.setNBlocks";
static const char __pyx_k_PricingSolver___setstate_cython[] = "PricingSolver.__setstate_cython__";
static const char __pyx_k_VarClassifier___setstate_cython[] = "VarClassifier.__setstate_cython__";
static const char __pyx_k_VarClassifier_freeVarClassifier[] = "VarClassifier.freeVarClassifier";
static const char __pyx_k_conspartitioncollection_element[] = "conspartitioncollection_element";
static const char __pyx_k_isPartialdecDuplicateofFinished[] = "isPartialdecDuplicateofFinished";
static const char __pyx_k_is_not_supported_Only_svg_and_p[] = " is not supported. Only \"svg\" and \"png\" are supported.";
static const char __pyx_k_src_pygcgopt_consclassifier_pxi[] = "src/pygcgopt/consclassifier.pxi";
static const char __pyx_k_src_pygcgopt_pricing_solver_pxi[] = "src/pygcgopt/pricing_solver.pxi";
static const char __pyx_k_ConsClassifier___setstate_cython[] = "ConsClassifier.__setstate_cython__";
static const char __pyx_k_ConsClassifier_freeConsClassifie[] = "ConsClassifier.freeConsClassifier";
static const char __pyx_k_Consclassifier_0_yields_a_classi[] = "Consclassifier {0} yields a classification with {1} different constraint classes";
static const char __pyx_k_DetProbData_addCandidatesNBlocks[] = "DetProbData.addCandidatesNBlocksNVotes";
static const char __pyx_k_DetProbData_addPartialdecToAnces[] = "DetProbData.addPartialdecToAncestor";
static const char __pyx_k_DetProbData_addPartialdecToFinis[] = "DetProbData.addPartialdecToFinished";
static const char __pyx_k_DetProbData_clearAncestorPartial[] = "DetProbData.clearAncestorPartialdecs";
static const char __pyx_k_DetProbData_clearCurrentPartiald[] = "DetProbData.clearCurrentPartialdecs";
static const char __pyx_k_DetProbData_clearFinishedPartial[] = "DetProbData.clearFinishedPartialdecs";
static const char __pyx_k_DetProbData_conspartitioncollect[] = "DetProbData.conspartitioncollection";
static const char __pyx_k_DetProbData_createConssAdjacency[] = "DetProbData.createConssAdjacency";
static const char __pyx_k_DetProbData_getAncestorPartialde[] = "DetProbData.getAncestorPartialdec";
static const char __pyx_k_DetProbData_getFinishedPartialde[] = "DetProbData.getFinishedPartialdec";
static const char __pyx_k_DetProbData_getNAncestorPartiald[] = "DetProbData.getNAncestorPartialdecs";
static const char __pyx_k_DetProbData_getNFinishedPartiald[] = "DetProbData.getNFinishedPartialdecs";
static const char __pyx_k_DetProbData_getOrigVarsFixedZero[] = "DetProbData.getOrigVarsFixedZero";
static const char __pyx_k_DetProbData_getSortedCandidatesN[] = "DetProbData.getSortedCandidatesNBlocks";
static const char __pyx_k_DetProbData_isAssignedToOrigProb[] = "DetProbData.isAssignedToOrigProb";
static const char __pyx_k_DetProbData_isConsCardinalityCon[] = "DetProbData.isConsCardinalityCons";
static const char __pyx_k_DetProbData_isConssAdjInitialize[] = "DetProbData.isConssAdjInitialized";
static const char __pyx_k_DetProbData_isPartialdecDuplicat[] = "DetProbData.isPartialdecDuplicateofFinished";
static const char __pyx_k_DetProbData_nblockscandidatescal[] = "DetProbData.nblockscandidatescalctime";
static const char __pyx_k_DetProbData_partialdecIsNoDuplic[] = "DetProbData.partialdecIsNoDuplicateOfPartialdecs";
static const char __pyx_k_DetProbData_sortFinishedForScore[] = "DetProbData.sortFinishedForScore";
static const char __pyx_k_DetProbData_translatePartialdecs[] = "DetProbData.translatePartialdecs";
static const char __pyx_k_DetProbData_varpartitioncollecti[] = "DetProbData.varpartitioncollection";
static const char __pyx_k_Detector_callback_returned_of_ty[] = "Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.";
static const char __pyx_k_Expected_iterable_as_first_argum[] = "Expected iterable as first argument. Got '{}' instead.";
static const char __pyx_k_GCGMasterModel___setstate_cython[] = "GCGMasterModel.__setstate_cython__";
static const char __pyx_k_GCGPricingModel___setstate_cytho[] = "GCGPricingModel.__setstate_cython__";
static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))";
static const char __pyx_k_Length_of_value_for_decchar_must[] = "Length of value for 'decchar' must be 1";
static const char __pyx_k_Model_addPreexistingPartialDecom[] = "Model.addPreexistingPartialDecomposition";
static const char __pyx_k_Model_setDetectorFinishingEnable[] = "Model.setDetectorFinishingEnabled";
static const char __pyx_k_Model_setDetectorPostprocessingE[] = "Model.setDetectorPostprocessingEnabled";
static const char __pyx_k_Model_setPricingSolverExactEnabl[] = "Model.setPricingSolverExactEnabled";
static const char __pyx_k_Model_setPricingSolverHeuristicE[] = "Model.setPricingSolverHeuristicEnabled";
static const char __pyx_k_PY_CONS_DECOMPINFO___reduce_cyth[] = "PY_CONS_DECOMPINFO.__reduce_cython__";
static const char __pyx_k_PY_CONS_DECOMPINFO___setstate_cy[] = "PY_CONS_DECOMPINFO.__setstate_cython__";
static const char __pyx_k_PY_GCG_PRICINGSTATUS___reduce_cy[] = "PY_GCG_PRICINGSTATUS.__reduce_cython__";
static const char __pyx_k_PY_VAR_DECOMPINFO___reduce_cytho[] = "PY_VAR_DECOMPINFO.__reduce_cython__";
static const char __pyx_k_PY_VAR_DECOMPINFO___setstate_cyt[] = "PY_VAR_DECOMPINFO.__setstate_cython__";
static const char __pyx_k_PartialDecomposition___reduce_cy[] = "PartialDecomposition.__reduce_cython__";
static const char __pyx_k_PartialDecomposition_addAncestor[] = "PartialDecomposition.addAncestorID";
static const char __pyx_k_PartialDecomposition_addClockTim[] = "PartialDecomposition.addClockTime";
static const char __pyx_k_PartialDecomposition_addDecChang[] = "PartialDecomposition.addDecChangesFromAncestor";
static const char __pyx_k_PartialDecomposition_addDetector[] = "PartialDecomposition.addDetectorChainInfo";
static const char __pyx_k_PartialDecomposition_addNNewBloc[] = "PartialDecomposition.addNNewBlocks";
static const char __pyx_k_PartialDecomposition_addPctConss[] = "PartialDecomposition.addPctConssFromFree";
static const char __pyx_k_PartialDecomposition_addPctVarsF[] = "PartialDecomposition.addPctVarsFromFree";
static const char __pyx_k_PartialDecomposition_addPctVarsT[] = "PartialDecomposition.addPctVarsToBlock";
static const char __pyx_k_PartialDecomposition_aggInfoCalc[] = "PartialDecomposition.aggInfoCalculated";
static const char __pyx_k_PartialDecomposition_alreadyAssi[] = "PartialDecomposition.alreadyAssignedConssToBlocks";
static const char __pyx_k_PartialDecomposition_assignCurre[] = "PartialDecomposition.assignCurrentStairlinking";
static const char __pyx_k_PartialDecomposition_assignOpenC[] = "PartialDecomposition.assignOpenConssToMaster";
static const char __pyx_k_PartialDecomposition_assignSmall[] = "PartialDecomposition.assignSmallestComponentsButOneConssAdjacency";
static const char __pyx_k_PartialDecomposition_buildDecCha[] = "PartialDecomposition.buildDecChainString";
static const char __pyx_k_PartialDecomposition_calcAggrega[] = "PartialDecomposition.calcAggregationInformation";
static const char __pyx_k_PartialDecomposition_calcStairli[] = "PartialDecomposition.calcStairlinkingVars";
static const char __pyx_k_PartialDecomposition_checkAllCon[] = "PartialDecomposition.checkAllConssAssigned";
static const char __pyx_k_PartialDecomposition_checkConsis[] = "PartialDecomposition.checkConsistency";
static const char __pyx_k_PartialDecomposition_completeByC[] = "PartialDecomposition.completeByConnected";
static const char __pyx_k_PartialDecomposition_completeGre[] = "PartialDecomposition.completeGreedily";
static const char __pyx_k_PartialDecomposition_considerImp[] = "PartialDecomposition.considerImplicits";
static const char __pyx_k_PartialDecomposition_copyPartiti[] = "PartialDecomposition.copyPartitionStatistics";
static const char __pyx_k_PartialDecomposition_deleteEmpty[] = "PartialDecomposition.deleteEmptyBlocks";
static const char __pyx_k_PartialDecomposition_deleteOpenc[] = "PartialDecomposition.deleteOpencons";
static const char __pyx_k_PartialDecomposition_deleteOpenv[] = "PartialDecomposition.deleteOpenvar";
static const char __pyx_k_PartialDecomposition_displayInfo[] = "PartialDecomposition.displayInfo";
static const char __pyx_k_PartialDecomposition_findVarsLin[] = "PartialDecomposition.findVarsLinkingToMaster";
static const char __pyx_k_PartialDecomposition_fixConsToBl[] = "PartialDecomposition.fixConsToBlockId";
static const char __pyx_k_PartialDecomposition_fixConsToMa[] = "PartialDecomposition.fixConsToMaster";
static const char __pyx_k_PartialDecomposition_fixConssToB[] = "PartialDecomposition.fixConssToBlockId";
static const char __pyx_k_PartialDecomposition_fixConssToM[] = "PartialDecomposition.fixConssToMaster";
static const char __pyx_k_PartialDecomposition_fixVarToLin[] = "PartialDecomposition.fixVarToLinking";
static const char __pyx_k_PartialDecomposition_fixVarToMas[] = "PartialDecomposition.fixVarToMaster";
static const char __pyx_k_PartialDecomposition_fixVarToSta[] = "PartialDecomposition.fixVarToStairlinking";
static const char __pyx_k_PartialDecomposition_getAncestor[] = "PartialDecomposition.getAncestorList";
static const char __pyx_k_PartialDecomposition_getBlocksFo[] = "PartialDecomposition.getBlocksForRep";
static const char __pyx_k_PartialDecomposition_getConssFor[] = "PartialDecomposition.getConssForBlock";
static const char __pyx_k_PartialDecomposition_getDetector[] = "PartialDecomposition.getDetectorchainInfo";
static const char __pyx_k_PartialDecomposition_getDetprobd[] = "PartialDecomposition.getDetprobdata";
static const char __pyx_k_PartialDecomposition_getFinished[] = "PartialDecomposition.getFinishedByFinisher";
static const char __pyx_k_PartialDecomposition_getHashValu[] = "PartialDecomposition.getHashValue";
static const char __pyx_k_PartialDecomposition_getLinkingv[] = "PartialDecomposition.getLinkingvars";
static const char __pyx_k_PartialDecomposition_getMasterco[] = "PartialDecomposition.getMasterconss";
static const char __pyx_k_PartialDecomposition_getMasterva[] = "PartialDecomposition.getMastervars";
static const char __pyx_k_PartialDecomposition_getNAncesto[] = "PartialDecomposition.getNAncestors";
static const char __pyx_k_PartialDecomposition_getNCoeffsF[] = "PartialDecomposition.getNCoeffsForMaster";
static const char __pyx_k_PartialDecomposition_getNConssFo[] = "PartialDecomposition.getNConssForBlock";
static const char __pyx_k_PartialDecomposition_getNDetecto[] = "PartialDecomposition.getNDetectors";
static const char __pyx_k_PartialDecomposition_getNLinking[] = "PartialDecomposition.getNLinkingvars";
static const char __pyx_k_PartialDecomposition_getNMasterc[] = "PartialDecomposition.getNMasterconss";
static const char __pyx_k_PartialDecomposition_getNMasterv[] = "PartialDecomposition.getNMastervars";
static const char __pyx_k_PartialDecomposition_getNNewBloc[] = "PartialDecomposition.getNNewBlocksVector";
static const char __pyx_k_PartialDecomposition_getNOpencon[] = "PartialDecomposition.getNOpenconss";
static const char __pyx_k_PartialDecomposition_getNOpenvar[] = "PartialDecomposition.getNOpenvars";
static const char __pyx_k_PartialDecomposition_getNStairli[] = "PartialDecomposition.getNStairlinkingvars";
static const char __pyx_k_PartialDecomposition_getNTotalSt[] = "PartialDecomposition.getNTotalStairlinkingvars";
static const char __pyx_k_PartialDecomposition_getNVarsFor[] = "PartialDecomposition.getNVarsForBlock";
static const char __pyx_k_PartialDecomposition_getOpencons[] = "PartialDecomposition.getOpenconss";
static const char __pyx_k_PartialDecomposition_getOpenvars[] = "PartialDecomposition.getOpenvars";
static const char __pyx_k_PartialDecomposition_getPctConss[] = "PartialDecomposition.getPctConssToBorder";
static const char __pyx_k_PartialDecomposition_getPctVarsF[] = "PartialDecomposition.getPctVarsFromFree";
static const char __pyx_k_PartialDecomposition_getPctVarsT[] = "PartialDecomposition.getPctVarsToBorder";
static const char __pyx_k_PartialDecomposition_getRepForBl[] = "PartialDecomposition.getRepForBlock";
static const char __pyx_k_PartialDecomposition_getRepVarma[] = "PartialDecomposition.getRepVarmap";
static const char __pyx_k_PartialDecomposition_getTranslat[] = "PartialDecomposition.getTranslatedpartialdecid";
static const char __pyx_k_PartialDecomposition_getUsergive[] = "PartialDecomposition.getUsergiven";
static const char __pyx_k_PartialDecomposition_getVarProbi[] = "PartialDecomposition.getVarProbindexForBlock";
static const char __pyx_k_PartialDecomposition_getVarsForB[] = "PartialDecomposition.getVarsForBlock";
static const char __pyx_k_PartialDecomposition_hasSetppMas[] = "PartialDecomposition.hasSetppMaster";
static const char __pyx_k_PartialDecomposition_hasSetppcMa[] = "PartialDecomposition.hasSetppcMaster";
static const char __pyx_k_PartialDecomposition_hasSetppcca[] = "PartialDecomposition.hasSetppccardMaster";
static const char __pyx_k_PartialDecomposition_isAssignedT[] = "PartialDecomposition.isAssignedToOrigProb";
static const char __pyx_k_PartialDecomposition_isConsMaste[] = "PartialDecomposition.isConsMastercons";
static const char __pyx_k_PartialDecomposition_isConsOpenc[] = "PartialDecomposition.isConsOpencons";
static const char __pyx_k_PartialDecomposition_isVarBlockv[] = "PartialDecomposition.isVarBlockvarOfBlock";
static const char __pyx_k_PartialDecomposition_isVarLinkin[] = "PartialDecomposition.isVarLinkingvar";
static const char __pyx_k_PartialDecomposition_isVarMaster[] = "PartialDecomposition.isVarMastervar";
static const char __pyx_k_PartialDecomposition_isVarOpenva[] = "PartialDecomposition.isVarOpenvar";
static const char __pyx_k_PartialDecomposition_isVarStairl[] = "PartialDecomposition.isVarStairlinkingvar";
static const char __pyx_k_PartialDecomposition_refineToBlo[] = "PartialDecomposition.refineToBlocks";
static const char __pyx_k_PartialDecomposition_refineToMas[] = "PartialDecomposition.refineToMaster";
static const char __pyx_k_PartialDecomposition_removeAnces[] = "PartialDecomposition.removeAncestorID";
static const char __pyx_k_PartialDecomposition_removeMaste[] = "PartialDecomposition.removeMastercons";
static const char __pyx_k_PartialDecomposition_setAncestor[] = "PartialDecomposition.setAncestorList";
static const char __pyx_k_PartialDecomposition_setConsPart[] = "PartialDecomposition.setConsPartitionStatistics";
static const char __pyx_k_PartialDecomposition_setConsToMa[] = "PartialDecomposition.setConsToMaster";
static const char __pyx_k_PartialDecomposition_setDetector[] = "PartialDecomposition.setDetectorPropagated";
static const char __pyx_k_PartialDecomposition_setFinished[] = "PartialDecomposition.setFinishedByFinisher";
static const char __pyx_k_PartialDecomposition_setPctConss[] = "PartialDecomposition.setPctConssToBlockVector";
static const char __pyx_k_PartialDecomposition_setPctVarsF[] = "PartialDecomposition.setPctVarsFromFreeVector";
static const char __pyx_k_PartialDecomposition_setPctVarsT[] = "PartialDecomposition.setPctVarsToBorderVector";
static const char __pyx_k_PartialDecomposition_setStemsFro[] = "PartialDecomposition.setStemsFromOrig";
static const char __pyx_k_PartialDecomposition_setTranslat[] = "PartialDecomposition.setTranslatedpartialdecid";
static const char __pyx_k_PartialDecomposition_setUsergive[] = "PartialDecomposition.setUsergiven";
static const char __pyx_k_PartialDecomposition_setVarParti[] = "PartialDecomposition.setVarPartitionStatistics";
static const char __pyx_k_PartialDecomposition_setVarToBlo[] = "PartialDecomposition.setVarToBlockId";
static const char __pyx_k_PartialDecomposition_setVarToLin[] = "PartialDecomposition.setVarToLinking";
static const char __pyx_k_PartialDecomposition_setVarToMas[] = "PartialDecomposition.setVarToMaster";
static const char __pyx_k_PartialDecomposition_setVarToSta[] = "PartialDecomposition.setVarToStairlinking";
static const char __pyx_k_PartialDecomposition_shouldCompl[] = "PartialDecomposition.shouldCompletedByConsToMaster";
static const char __pyx_k_PartialDecomposition_showVisuali[] = "PartialDecomposition.showVisualization";
static const char __pyx_k_The_value_of_the_key_newpartiald[] = "The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.";
static const char __pyx_k_Varclassifier_0_yields_a_classif[] = "Varclassifier {0} yields a classification with {1} different variable classes";
static const char __pyx_k_addPartialdecToFinishedUnchecked[] = "addPartialdecToFinishedUnchecked";
static const char __pyx_k_addPreexistingPartialDecompositi[] = "addPreexistingPartialDecomposition";
static const char __pyx_k_assignSmallestComponentsButOneCo[] = "assignSmallestComponentsButOneConssAdjacency";
static const char __pyx_k_cannot_create_Column_with_GCG_CO[] = "cannot create Column with GCG_COL* == NULL";
static const char __pyx_k_cannot_create_ConsPart_with_Cons[] = "cannot create ConsPart with ConsPartition* == NULL";
static const char __pyx_k_cannot_create_DetProbData_with_D[] = "cannot create DetProbData with DETPROBDATA* == NULL";
static const char __pyx_k_cannot_create_Model_with_SCIP_NU[] = "cannot create Model with SCIP* == NULL";
static const char __pyx_k_cannot_create_PartialDecompositi[] = "cannot create PartialDecomposition with PARTIALDECOMP* == NULL";
static const char __pyx_k_cannot_create_VarPart_with_VarPa[] = "cannot create VarPart with VarPartition* == NULL";
static const char __pyx_k_completeByConnectedConssAdjacenc[] = "completeByConnectedConssAdjacency";
static const char __pyx_k_detection_classification_varclas[] = "detection/classification/varclassifier/{}/enabled";
static const char __pyx_k_detection_detectors_finishingena[] = "detection/detectors/{}/finishingenabled";
static const char __pyx_k_detection_detectors_postprocessi[] = "detection/detectors/{}/postprocessingenabled";
static const char __pyx_k_max_foreseeing_white_with_aggreg[] = "max foreseeing white with aggregation info";
static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
static const char __pyx_k_partialdecIsNoDuplicateOfPartial[] = "partialdecIsNoDuplicateOfPartialdecs";
static const char __pyx_k_ppc_max_white_with_aggregation_i[] = "ppc-max-white with aggregation info";
static const char __pyx_k_self__scip_self__valid_cannot_be[] = "self._scip,self._valid cannot be converted to a Python object for pickling";
static const char __pyx_k_self_consPartition_cannot_be_con[] = "self.consPartition cannot be converted to a Python object for pickling";
static const char __pyx_k_self_gcg_col_cannot_be_converted[] = "self.gcg_col cannot be converted to a Python object for pickling";
static const char __pyx_k_self_thisptr_cannot_be_converted[] = "self.thisptr cannot be converted to a Python object for pickling";
static const char __pyx_k_self_varPartition_cannot_be_conv[] = "self.varPartition cannot be converted to a Python object for pickling";
static const char __pyx_k_setDetectorPostprocessingEnabled[] = "setDetectorPostprocessingEnabled";
static const char __pyx_k_setPricingSolverHeuristicEnabled[] = "setPricingSolverHeuristicEnabled";
static const char __pyx_k_DetProbData_addPartialdecToFinis_2[] = "DetProbData.addPartialdecToFinishedUnchecked";
static const char __pyx_k_DetProbData_getFinishedPartialde_2[] = "DetProbData.getFinishedPartialdecs";
static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))";
static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_3[] = "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))";
static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_4[] = "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))";
static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_5[] = "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())";
static const char __pyx_k_PartialDecomposition_addPctConss_2[] = "PartialDecomposition.addPctConssToBlock";
static const char __pyx_k_PartialDecomposition_addPctConss_3[] = "PartialDecomposition.addPctConssToBorder";
static const char __pyx_k_PartialDecomposition_addPctVarsT_2[] = "PartialDecomposition.addPctVarsToBorder";
static const char __pyx_k_PartialDecomposition_completeByC_2[] = "PartialDecomposition.completeByConnectedConssAdjacency";
static const char __pyx_k_PartialDecomposition_findVarsLin_2[] = "PartialDecomposition.findVarsLinkingToStairlinking";
static const char __pyx_k_PartialDecomposition_fixConsToBl_2[] = "PartialDecomposition.fixConsToBlock";
static const char __pyx_k_PartialDecomposition_fixConssToB_2[] = "PartialDecomposition.fixConssToBlock";
static const char __pyx_k_PartialDecomposition_getAncestor_2[] = "PartialDecomposition.getAncestorID";
static const char __pyx_k_PartialDecomposition_getConssFor_2[] = "PartialDecomposition.getConssForBlocks";
static const char __pyx_k_PartialDecomposition_getDetector_2[] = "PartialDecomposition.getDetectorClockTime";
static const char __pyx_k_PartialDecomposition_getDetector_3[] = "PartialDecomposition.getDetectorClockTimes";
static const char __pyx_k_PartialDecomposition_getNCoeffsF_2[] = "PartialDecomposition.getNCoeffsForBlock";
static const char __pyx_k_PartialDecomposition_getNNewBloc_2[] = "PartialDecomposition.getNNewBlocks";
static const char __pyx_k_PartialDecomposition_getNVarsFor_2[] = "PartialDecomposition.getNVarsForBlocks";
static const char __pyx_k_PartialDecomposition_getPctConss_2[] = "PartialDecomposition.getPctConssToBorderVector";
static const char __pyx_k_PartialDecomposition_getPctConss_3[] = "PartialDecomposition.getPctConssToBlock";
static const char __pyx_k_PartialDecomposition_getPctConss_4[] = "PartialDecomposition.getPctConssToBlockVector";
static const char __pyx_k_PartialDecomposition_getPctConss_5[] = "PartialDecomposition.getPctConssFromFree";
static const char __pyx_k_PartialDecomposition_getPctConss_6[] = "PartialDecomposition.getPctConssFromFreeVector";
static const char __pyx_k_PartialDecomposition_getPctVarsF_2[] = "PartialDecomposition.getPctVarsFromFreeVector";
static const char __pyx_k_PartialDecomposition_getPctVarsT_2[] = "PartialDecomposition.getPctVarsToBorderVector";
static const char __pyx_k_PartialDecomposition_getPctVarsT_3[] = "PartialDecomposition.getPctVarsToBlock";
static const char __pyx_k_PartialDecomposition_getPctVarsT_4[] = "PartialDecomposition.getPctVarsToBlockVector";
static const char __pyx_k_PartialDecomposition_isVarStairl_2[] = "PartialDecomposition.isVarStairlinkingvarOfBlock";
static const char __pyx_k_PartialDecomposition_setDetector_2[] = "PartialDecomposition.setDetectorFinished";
static const char __pyx_k_PartialDecomposition_setDetector_3[] = "PartialDecomposition.setDetectorFinishedOrig";
static const char __pyx_k_PartialDecomposition_setDetector_4[] = "PartialDecomposition.setDetectorClockTimes";
static const char __pyx_k_PartialDecomposition_setFinished_2[] = "PartialDecomposition.setFinishedByFinisherOrig";
static const char __pyx_k_PartialDecomposition_setPctConss_2[] = "PartialDecomposition.setPctConssFromFreeVector";
static const char __pyx_k_PartialDecomposition_setPctConss_3[] = "PartialDecomposition.setPctConssToBorderVector";
static const char __pyx_k_PartialDecomposition_setPctVarsT_2[] = "PartialDecomposition.setPctVarsToBlockVector";
/* #### Code section: decls ### */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_freeDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_2initDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_4exitDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_6propagatePartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_8finishPartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_10postprocessPartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_12setParamAggressive(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_14setParamDefault(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_16setParamFast(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_8Detector_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_8Detector_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname___get__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_18__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_20__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_freeSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_2initSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_4exitSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_6initSolution(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_8exitSolution(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_10updateSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_varobjschanged, CYTHON_UNUSED PyObject *__pyx_v_varbndschanged, CYTHON_UNUSED PyObject *__pyx_v_consschanged); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_12solve(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_dualsolconv); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_dualsolconv); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername___get__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_scorefree(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_2scorecalculate(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_5Score_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_5Score_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_9scorename___get__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_getClassDescription(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_2getClassName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_4getName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_6getNClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_10setClassDescription(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_desc); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_12setClassName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_14addClass(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_desc, PyObject *__pyx_v_decompInfo); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_16assignConsToClass(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_18getAllSubsets(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_both, PyObject *__pyx_v_only_master, PyObject *__pyx_v_only_pricing); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_24getClassOfCons(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_26getNConss(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_30isConsClassified(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_32reduceClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_maxNumberOfClasses); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_decompInfo); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_getClassDescription(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_2getClassName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_4getName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_6getNClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_10setClassDescription(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_desc); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_12setClassName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_14addClass(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_desc, PyObject *__pyx_v_decompInfo); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_16assignVarToClass(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_18getAllSubsets(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_all, PyObject *__pyx_v_linking, PyObject *__pyx_v_master, PyObject *__pyx_v_block); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_24getClassOfVar(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_26getNVars(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_30isVarClassified(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_32reduceClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_maxNumberOfClasses); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_decompInfo); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition___cinit__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static void __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_2__dealloc__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_4__copy__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_6copy(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_selected); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_8addBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_12isComplete(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_18getNConss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_20getNVars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_22getID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, PyObject *__pyx_v_block); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss, PyObject *__pyx_v_block); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block1_id, int __pyx_v_block2_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_firstblock_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, gcg::USERGIVEN __pyx_v_value); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13classic_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13benders_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_clocktime); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_154getScore(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_162complete(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_164sort(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_172prepare(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_176getNReps(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_nblocks); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_nnewblocks); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detailLevel); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_variables); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_dec_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_buffer); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_ancestor); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_decinfo); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_otherpartialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_rep_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchain_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_finished); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_ignoreDetectionLimits); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_finished); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_fromorig); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchain_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_290__repr__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newlist); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_repid, int __pyx_v_blockrepid); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_varid, int __pyx_v_block); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex, struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition, PyObject *__pyx_v_consclassesmaster); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex, struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition, PyObject *__pyx_v_varclasseslinking, PyObject *__pyx_v_varclassesmaster); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_createConsPart(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_nclasses, PyObject *__pyx_v_ncons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_2createVarPart(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_nclasses, PyObject *__pyx_v_nvars); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_candidatesNBlocks); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_conspartitioncollection); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varpartitioncollection); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_16classificationtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_18classificationtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_classificationtime); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_nblockscandidatescalctime); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_24postprocessingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_26postprocessingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_postprocessingtime); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_28translatingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_30translatingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_translatingtime); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_32addConsPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, int __pyx_v_candidate, int __pyx_v_nvotes); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_44addVarPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partialdecindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_58getConsPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partitionIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_60getConsPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_62getCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_64getConssForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_66getConssForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, int __pyx_v_partialdecindex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_74getIndexForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_76getIndexForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_82getNConss(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_84getNConssForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_86getNConssForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_94getNNonzeros(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_98getNVars(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_104getRelevantConss(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_106getRelevantVars(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_108getModel(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_candidates); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_112getVal(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_114getValsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_116getVarPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partitionIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_118getVarPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_120getVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_122getVarsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_128isConsSetpp(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_130isConsSetppc(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_comppartialdec, PyObject *__pyx_v_partialdecs, PyObject *__pyx_v_sort); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_otherdata, PyObject *__pyx_v_otherpartialdecs); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_2classify(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_conss, CYTHON_UNUSED PyObject *__pyx_v_partition); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name___get__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_2__set__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_4__del__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_2classify(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_vars, CYTHON_UNUSED PyObject *__pyx_v_partition); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name___get__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_2__set__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_4__del__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_includeDefaultPlugins(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_2addVar(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_4presolve(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_6detect(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_8printStatistics(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_10printVersion(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_12optimize(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_14getDualbound(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_16getDetprobdataOrig(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_20listDecompositions(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_22getPartDecompFromID(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_24addDecompositionFromConss(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_master_conss, PyObject *__pyx_v_block_conss); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_28addDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_30createDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_32includePricingSolver(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_pricingSolver, PyObject *__pyx_v_solvername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_heuristicEnabled, PyObject *__pyx_v_exactEnabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_34listPricingSolvers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_42includeConsClassifier(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_consclassifier, PyObject *__pyx_v_consclassifiername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_44getNConsClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_46listConsClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_48includeVarClassifier(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_varclassifier, PyObject *__pyx_v_varclassifiername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_50getNVarClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_52listVarClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_varclassifier_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_56includeDetector(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector, PyObject *__pyx_v_detectorname, PyObject *__pyx_v_decchar, PyObject *__pyx_v_desc, PyObject *__pyx_v_freqcallround, PyObject *__pyx_v_maxcallround, PyObject *__pyx_v_mincallround, PyObject *__pyx_v_freqcallroundoriginal, PyObject *__pyx_v_maxcallroundoriginal, PyObject *__pyx_v_mincallroundoriginal, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled, PyObject *__pyx_v_enabledfinishing, PyObject *__pyx_v_enabledpostprocessing, PyObject *__pyx_v_skip, PyObject *__pyx_v_usefulrecall); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_58includeScore(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score, PyObject *__pyx_v_scorename, PyObject *__pyx_v_shortname, PyObject *__pyx_v_desc); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_60listDetectors(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_62listScores(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_64setDetectorEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_70getMasterProb(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_72setGCGSeparating(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_setting); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_74writeAllDecomps(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_directory, PyObject *__pyx_v_extension, bool __pyx_v_original, bool __pyx_v_presolved, PyObject *__pyx_v_createDirectory); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_76getMastervars(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_78__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_80__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol(struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self, PyObject *__pyx_v_probnr, PyObject *__pyx_v_variables, PyObject *__pyx_v_vals, bool __pyx_v_isray, PyObject *__pyx_v_redcost); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_addCol(struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, PyObject *__pyx_v_var); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static Py_hash_t __pyx_pf_8pygcgopt_3gcg_9GCGColumn___hash__(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_2__eq__(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self, PyObject *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_8pygcgopt_3gcg___pyx_unpickle_Detector(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_8pygcgopt_3gcg_2__pyx_unpickle_PricingSolver(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_8pygcgopt_3gcg_4__pyx_unpickle_Score(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_8pygcgopt_3gcg_6__pyx_unpickle_ConsClassifier(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_8pygcgopt_3gcg_8__pyx_unpickle_VarClassifier(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_8pygcgopt_3gcg_10__pyx_unpickle_PY_GCG_PRICINGSTATUS(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_8pygcgopt_3gcg_12__pyx_unpickle_PY_USERGIVEN(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_8pygcgopt_3gcg_14__pyx_unpickle_PY_VAR_DECOMPINFO(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_8pygcgopt_3gcg_16__pyx_unpickle_PY_CONS_DECOMPINFO(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_8pygcgopt_3gcg_DetProbData(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_ConsPart(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_VarPart(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGColumn(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Detector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PricingSolver(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Score(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PartialDecomposition(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_ConsClassifier(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_VarClassifier(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_USERGIVEN(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_VAR_DECOMPINFO(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_CONS_DECOMPINFO(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Model(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGPricingModel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGMasterModel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  #ifdef __Pyx_CyFunction_USED
  PyTypeObject *__pyx_CyFunctionType;
  #endif
  #ifdef __Pyx_FusedFunction_USED
  PyTypeObject *__pyx_FusedFunctionType;
  #endif
  #ifdef __Pyx_Generator_USED
  PyTypeObject *__pyx_GeneratorType;
  #endif
  #ifdef __Pyx_IterableCoroutine_USED
  PyTypeObject *__pyx_IterableCoroutineType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineAwaitType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineType;
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Expr;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Event;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Column;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Row;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_NLRow;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Solution;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_DomainChanges;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_BoundChange;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Node;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Variable;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Constraint;
  PyTypeObject *__pyx_ptype_9pyscipopt_4scip_Model;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_7cpython_4type_type;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_7cpython_4bool_bool;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_7cpython_7complex_complex;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  PyObject *__pyx_type_8pygcgopt_3gcg_DetProbData;
  PyObject *__pyx_type_8pygcgopt_3gcg_ConsPart;
  PyObject *__pyx_type_8pygcgopt_3gcg_VarPart;
  PyObject *__pyx_type_8pygcgopt_3gcg_GCGColumn;
  PyObject *__pyx_type_8pygcgopt_3gcg_Detector;
  PyObject *__pyx_type_8pygcgopt_3gcg_PricingSolver;
  PyObject *__pyx_type_8pygcgopt_3gcg_Score;
  PyObject *__pyx_type_8pygcgopt_3gcg_PartialDecomposition;
  PyObject *__pyx_type_8pygcgopt_3gcg_ConsClassifier;
  PyObject *__pyx_type_8pygcgopt_3gcg_VarClassifier;
  PyObject *__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS;
  PyObject *__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN;
  PyObject *__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO;
  PyObject *__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO;
  PyObject *__pyx_type_8pygcgopt_3gcg_Model;
  PyObject *__pyx_type_8pygcgopt_3gcg_GCGPricingModel;
  PyObject *__pyx_type_8pygcgopt_3gcg_GCGMasterModel;
  #endif
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_DetProbData;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_ConsPart;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_VarPart;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_GCGColumn;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_Detector;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PricingSolver;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_Score;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_ConsClassifier;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_VarClassifier;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_Model;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel;
  PyTypeObject *__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel;
  PyObject *__pyx_n_s_ConsClassifier;
  PyObject *__pyx_n_s_ConsClassifier___reduce_cython;
  PyObject *__pyx_n_s_ConsClassifier___setstate_cython;
  PyObject *__pyx_n_s_ConsClassifier_classify;
  PyObject *__pyx_n_s_ConsClassifier_freeConsClassifie;
  PyObject *__pyx_n_s_ConsPart;
  PyObject *__pyx_n_s_ConsPart___reduce_cython;
  PyObject *__pyx_n_s_ConsPart___setstate_cython;
  PyObject *__pyx_n_s_ConsPart_addClass;
  PyObject *__pyx_n_s_ConsPart_assignConsToClass;
  PyObject *__pyx_n_s_ConsPart_getAllSubsets;
  PyObject *__pyx_n_s_ConsPart_getClassDecompInfo;
  PyObject *__pyx_n_s_ConsPart_getClassDescription;
  PyObject *__pyx_n_s_ConsPart_getClassName;
  PyObject *__pyx_n_s_ConsPart_getClassNameOfCons;
  PyObject *__pyx_n_s_ConsPart_getClassOfCons;
  PyObject *__pyx_n_s_ConsPart_getNClasses;
  PyObject *__pyx_n_s_ConsPart_getNConss;
  PyObject *__pyx_n_s_ConsPart_getNConssOfClasses;
  PyObject *__pyx_n_s_ConsPart_getName;
  PyObject *__pyx_n_s_ConsPart_isConsClassified;
  PyObject *__pyx_n_s_ConsPart_reduceClasses;
  PyObject *__pyx_n_s_ConsPart_removeEmptyClasses;
  PyObject *__pyx_n_s_ConsPart_setClassDecompInfo;
  PyObject *__pyx_n_s_ConsPart_setClassDescription;
  PyObject *__pyx_n_s_ConsPart_setClassName;
  PyObject *__pyx_kp_u_Consclassifier_0_yields_a_classi;
  PyObject *__pyx_n_s_DetProbData;
  PyObject *__pyx_n_s_DetProbData___reduce_cython;
  PyObject *__pyx_n_s_DetProbData___setstate_cython;
  PyObject *__pyx_n_s_DetProbData_addCandidatesNBlocks;
  PyObject *__pyx_n_s_DetProbData_addConsPartition;
  PyObject *__pyx_n_s_DetProbData_addPartialdecToAnces;
  PyObject *__pyx_n_s_DetProbData_addPartialdecToFinis;
  PyObject *__pyx_n_s_DetProbData_addPartialdecToFinis_2;
  PyObject *__pyx_n_s_DetProbData_addPartialdecToOpen;
  PyObject *__pyx_n_s_DetProbData_addVarPartition;
  PyObject *__pyx_n_s_DetProbData_candidatesNBlocks;
  PyObject *__pyx_n_s_DetProbData_classificationtime;
  PyObject *__pyx_n_s_DetProbData_clearAncestorPartial;
  PyObject *__pyx_n_s_DetProbData_clearCurrentPartiald;
  PyObject *__pyx_n_s_DetProbData_clearFinishedPartial;
  PyObject *__pyx_n_s_DetProbData_conspartitioncollect;
  PyObject *__pyx_n_s_DetProbData_createConsPart;
  PyObject *__pyx_n_s_DetProbData_createConssAdjacency;
  PyObject *__pyx_n_s_DetProbData_createVarPart;
  PyObject *__pyx_n_s_DetProbData_freeTemporaryData;
  PyObject *__pyx_n_s_DetProbData_getAncestorPartialde;
  PyObject *__pyx_n_s_DetProbData_getCons;
  PyObject *__pyx_n_s_DetProbData_getConsPartition;
  PyObject *__pyx_n_s_DetProbData_getConsPartitions;
  PyObject *__pyx_n_s_DetProbData_getConssForCons;
  PyObject *__pyx_n_s_DetProbData_getConssForVar;
  PyObject *__pyx_n_s_DetProbData_getFinishedPartialde;
  PyObject *__pyx_n_s_DetProbData_getFinishedPartialde_2;
  PyObject *__pyx_n_s_DetProbData_getIndexForCons;
  PyObject *__pyx_n_s_DetProbData_getIndexForVar;
  PyObject *__pyx_n_s_DetProbData_getModel;
  PyObject *__pyx_n_s_DetProbData_getNAncestorPartiald;
  PyObject *__pyx_n_s_DetProbData_getNConsPartitions;
  PyObject *__pyx_n_s_DetProbData_getNConss;
  PyObject *__pyx_n_s_DetProbData_getNConssForCons;
  PyObject *__pyx_n_s_DetProbData_getNConssForVar;
  PyObject *__pyx_n_s_DetProbData_getNFinishedPartiald;
  PyObject *__pyx_n_s_DetProbData_getNNonzeros;
  PyObject *__pyx_n_s_DetProbData_getNOpenPartialdecs;
  PyObject *__pyx_n_s_DetProbData_getNPartialdecs;
  PyObject *__pyx_n_s_DetProbData_getNVarPartitions;
  PyObject *__pyx_n_s_DetProbData_getNVars;
  PyObject *__pyx_n_s_DetProbData_getNVarsForCons;
  PyObject *__pyx_n_s_DetProbData_getOpenPartialdecs;
  PyObject *__pyx_n_s_DetProbData_getOrigVarsFixedZero;
  PyObject *__pyx_n_s_DetProbData_getRelevantConss;
  PyObject *__pyx_n_s_DetProbData_getRelevantVars;
  PyObject *__pyx_n_s_DetProbData_getSortedCandidatesN;
  PyObject *__pyx_n_s_DetProbData_getVal;
  PyObject *__pyx_n_s_DetProbData_getValsForCons;
  PyObject *__pyx_n_s_DetProbData_getVar;
  PyObject *__pyx_n_s_DetProbData_getVarPartition;
  PyObject *__pyx_n_s_DetProbData_getVarPartitions;
  PyObject *__pyx_n_s_DetProbData_getVarsForCons;
  PyObject *__pyx_n_s_DetProbData_isAssignedToOrigProb;
  PyObject *__pyx_n_s_DetProbData_isConsCardinalityCon;
  PyObject *__pyx_n_s_DetProbData_isConsSetpp;
  PyObject *__pyx_n_s_DetProbData_isConsSetppc;
  PyObject *__pyx_n_s_DetProbData_isConssAdjInitialize;
  PyObject *__pyx_n_s_DetProbData_isPartialdecDuplicat;
  PyObject *__pyx_n_s_DetProbData_nblockscandidatescal;
  PyObject *__pyx_n_s_DetProbData_partialdecIsNoDuplic;
  PyObject *__pyx_n_s_DetProbData_postprocessingtime;
  PyObject *__pyx_n_s_DetProbData_sortFinishedForScore;
  PyObject *__pyx_n_s_DetProbData_translatePartialdecs;
  PyObject *__pyx_n_s_DetProbData_translatingtime;
  PyObject *__pyx_n_s_DetProbData_varpartitioncollecti;
  PyObject *__pyx_n_s_Detector;
  PyObject *__pyx_n_s_Detector___reduce_cython;
  PyObject *__pyx_n_s_Detector___setstate_cython;
  PyObject *__pyx_kp_u_Detector_callback_returned_of_ty;
  PyObject *__pyx_n_s_Detector_exitDetector;
  PyObject *__pyx_n_s_Detector_finishPartialdec;
  PyObject *__pyx_n_s_Detector_freeDetector;
  PyObject *__pyx_n_s_Detector_initDetector;
  PyObject *__pyx_n_s_Detector_postprocessPartialdec;
  PyObject *__pyx_n_s_Detector_propagatePartialdec;
  PyObject *__pyx_n_s_Detector_setParamAggressive;
  PyObject *__pyx_n_s_Detector_setParamDefault;
  PyObject *__pyx_n_s_Detector_setParamFast;
  PyObject *__pyx_kp_u_Expected_iterable_as_first_argum;
  PyObject *__pyx_kp_u_Format;
  PyObject *__pyx_n_s_GCGColumn;
  PyObject *__pyx_n_s_GCGColumn___reduce_cython;
  PyObject *__pyx_n_s_GCGColumn___setstate_cython;
  PyObject *__pyx_n_s_GCGMasterModel;
  PyObject *__pyx_n_s_GCGMasterModel___reduce_cython;
  PyObject *__pyx_n_s_GCGMasterModel___setstate_cython;
  PyObject *__pyx_n_s_GCGMasterModel_addCol;
  PyObject *__pyx_n_s_GCGMasterModel_getOrigvars;
  PyObject *__pyx_n_s_GCGPricingModel;
  PyObject *__pyx_n_s_GCGPricingModel___reduce_cython;
  PyObject *__pyx_n_s_GCGPricingModel___setstate_cytho;
  PyObject *__pyx_n_s_GCGPricingModel_createGcgCol;
  PyObject *__pyx_n_s_INFEASIBLE;
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3;
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4;
  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5;
  PyObject *__pyx_n_s_Iterable;
  PyObject *__pyx_kp_u_Length_of_value_for_decchar_must;
  PyObject *__pyx_n_s_List;
  PyObject *__pyx_n_s_MemoryError;
  PyObject *__pyx_n_s_Model;
  PyObject *__pyx_n_s_Model___reduce_cython;
  PyObject *__pyx_n_s_Model___setstate_cython;
  PyObject *__pyx_n_s_Model_addDecomposition;
  PyObject *__pyx_n_s_Model_addDecompositionFromConss;
  PyObject *__pyx_n_s_Model_addPreexistingPartialDecom;
  PyObject *__pyx_n_s_Model_addVar;
  PyObject *__pyx_n_s_Model_createDecomposition;
  PyObject *__pyx_n_s_Model_detect;
  PyObject *__pyx_n_s_Model_getDetprobdataOrig;
  PyObject *__pyx_n_s_Model_getDetprobdataPresolved;
  PyObject *__pyx_n_s_Model_getDualbound;
  PyObject *__pyx_n_s_Model_getMasterProb;
  PyObject *__pyx_n_s_Model_getMastervars;
  PyObject *__pyx_n_s_Model_getNConsClassifiers;
  PyObject *__pyx_n_s_Model_getNVarClassifiers;
  PyObject *__pyx_n_s_Model_getPartDecompFromID;
  PyObject *__pyx_n_s_Model_includeConsClassifier;
  PyObject *__pyx_n_s_Model_includeDefaultPlugins;
  PyObject *__pyx_n_s_Model_includeDetector;
  PyObject *__pyx_n_s_Model_includePricingSolver;
  PyObject *__pyx_n_s_Model_includeScore;
  PyObject *__pyx_n_s_Model_includeVarClassifier;
  PyObject *__pyx_n_s_Model_listConsClassifiers;
  PyObject *__pyx_n_s_Model_listDecompositions;
  PyObject *__pyx_n_s_Model_listDetectors;
  PyObject *__pyx_n_s_Model_listPricingSolvers;
  PyObject *__pyx_n_s_Model_listScores;
  PyObject *__pyx_n_s_Model_listVarClassifiers;
  PyObject *__pyx_n_s_Model_optimize;
  PyObject *__pyx_n_s_Model_presolve;
  PyObject *__pyx_n_s_Model_printStatistics;
  PyObject *__pyx_n_s_Model_printVersion;
  PyObject *__pyx_n_s_Model_setDetectorEnabled;
  PyObject *__pyx_n_s_Model_setDetectorFinishingEnable;
  PyObject *__pyx_n_s_Model_setDetectorPostprocessingE;
  PyObject *__pyx_n_s_Model_setGCGSeparating;
  PyObject *__pyx_n_s_Model_setPricingSolverEnabled;
  PyObject *__pyx_n_s_Model_setPricingSolverExactEnabl;
  PyObject *__pyx_n_s_Model_setPricingSolverHeuristicE;
  PyObject *__pyx_n_s_Model_setVarClassifierEnabled;
  PyObject *__pyx_n_s_Model_writeAllDecomps;
  PyObject *__pyx_n_s_NOTAPPLICABLE;
  PyObject *__pyx_n_s_OPTIMAL;
  PyObject *__pyx_n_s_PY_ALL;
  PyObject *__pyx_n_s_PY_BLOCK;
  PyObject *__pyx_n_s_PY_BOTH;
  PyObject *__pyx_n_s_PY_COMPLETE;
  PyObject *__pyx_n_s_PY_COMPLETED_CONSTOMASTER;
  PyObject *__pyx_n_s_PY_CONS_DECOMPINFO;
  PyObject *__pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth;
  PyObject *__pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy;
  PyObject *__pyx_n_s_PY_GCG_PRICINGSTATUS;
  PyObject *__pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy;
  PyObject *__pyx_n_s_PY_GCG_PRICINGSTATUS___setstate;
  PyObject *__pyx_n_s_PY_LINKING;
  PyObject *__pyx_n_s_PY_MASTER;
  PyObject *__pyx_n_s_PY_NOT;
  PyObject *__pyx_n_s_PY_ONLY_MASTER;
  PyObject *__pyx_n_s_PY_ONLY_PRICING;
  PyObject *__pyx_n_s_PY_PARTIAL;
  PyObject *__pyx_n_s_PY_SCIP_CALL;
  PyObject *__pyx_n_s_PY_USERGIVEN;
  PyObject *__pyx_n_s_PY_USERGIVEN___reduce_cython;
  PyObject *__pyx_n_s_PY_USERGIVEN___setstate_cython;
  PyObject *__pyx_n_s_PY_VAR_DECOMPINFO;
  PyObject *__pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho;
  PyObject *__pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt;
  PyObject *__pyx_n_s_PartialDecomposition;
  PyObject *__pyx_n_s_PartialDecomposition___copy;
  PyObject *__pyx_n_s_PartialDecomposition___reduce_cy;
  PyObject *__pyx_n_s_PartialDecomposition___setstate;
  PyObject *__pyx_n_s_PartialDecomposition__repr_png;
  PyObject *__pyx_n_s_PartialDecomposition__repr_svg;
  PyObject *__pyx_n_s_PartialDecomposition_addAncestor;
  PyObject *__pyx_n_s_PartialDecomposition_addBlock;
  PyObject *__pyx_n_s_PartialDecomposition_addClockTim;
  PyObject *__pyx_n_s_PartialDecomposition_addDecChang;
  PyObject *__pyx_n_s_PartialDecomposition_addDetector;
  PyObject *__pyx_n_s_PartialDecomposition_addNNewBloc;
  PyObject *__pyx_n_s_PartialDecomposition_addPctConss;
  PyObject *__pyx_n_s_PartialDecomposition_addPctConss_2;
  PyObject *__pyx_n_s_PartialDecomposition_addPctConss_3;
  PyObject *__pyx_n_s_PartialDecomposition_addPctVarsF;
  PyObject *__pyx_n_s_PartialDecomposition_addPctVarsT;
  PyObject *__pyx_n_s_PartialDecomposition_addPctVarsT_2;
  PyObject *__pyx_n_s_PartialDecomposition_aggInfoCalc;
  PyObject *__pyx_n_s_PartialDecomposition_alreadyAssi;
  PyObject *__pyx_n_s_PartialDecomposition_assignCurre;
  PyObject *__pyx_n_s_PartialDecomposition_assignOpenC;
  PyObject *__pyx_n_s_PartialDecomposition_assignSmall;
  PyObject *__pyx_n_s_PartialDecomposition_buildDecCha;
  PyObject *__pyx_n_s_PartialDecomposition_calcAggrega;
  PyObject *__pyx_n_s_PartialDecomposition_calcStairli;
  PyObject *__pyx_n_s_PartialDecomposition_checkAllCon;
  PyObject *__pyx_n_s_PartialDecomposition_checkConsis;
  PyObject *__pyx_n_s_PartialDecomposition_complete;
  PyObject *__pyx_n_s_PartialDecomposition_completeByC;
  PyObject *__pyx_n_s_PartialDecomposition_completeByC_2;
  PyObject *__pyx_n_s_PartialDecomposition_completeGre;
  PyObject *__pyx_n_s_PartialDecomposition_considerImp;
  PyObject *__pyx_n_s_PartialDecomposition_copy;
  PyObject *__pyx_n_s_PartialDecomposition_copyPartiti;
  PyObject *__pyx_n_s_PartialDecomposition_deleteEmpty;
  PyObject *__pyx_n_s_PartialDecomposition_deleteOpenc;
  PyObject *__pyx_n_s_PartialDecomposition_deleteOpenv;
  PyObject *__pyx_n_s_PartialDecomposition_displayInfo;
  PyObject *__pyx_n_s_PartialDecomposition_findVarsLin;
  PyObject *__pyx_n_s_PartialDecomposition_findVarsLin_2;
  PyObject *__pyx_n_s_PartialDecomposition_fixConsToBl;
  PyObject *__pyx_n_s_PartialDecomposition_fixConsToBl_2;
  PyObject *__pyx_n_s_PartialDecomposition_fixConsToMa;
  PyObject *__pyx_n_s_PartialDecomposition_fixConssToB;
  PyObject *__pyx_n_s_PartialDecomposition_fixConssToB_2;
  PyObject *__pyx_n_s_PartialDecomposition_fixConssToM;
  PyObject *__pyx_n_s_PartialDecomposition_fixVarToLin;
  PyObject *__pyx_n_s_PartialDecomposition_fixVarToMas;
  PyObject *__pyx_n_s_PartialDecomposition_fixVarToSta;
  PyObject *__pyx_n_s_PartialDecomposition_getAncestor;
  PyObject *__pyx_n_s_PartialDecomposition_getAncestor_2;
  PyObject *__pyx_n_s_PartialDecomposition_getBlocksFo;
  PyObject *__pyx_n_s_PartialDecomposition_getConssFor;
  PyObject *__pyx_n_s_PartialDecomposition_getConssFor_2;
  PyObject *__pyx_n_s_PartialDecomposition_getDetector;
  PyObject *__pyx_n_s_PartialDecomposition_getDetector_2;
  PyObject *__pyx_n_s_PartialDecomposition_getDetector_3;
  PyObject *__pyx_n_s_PartialDecomposition_getDetprobd;
  PyObject *__pyx_n_s_PartialDecomposition_getFinished;
  PyObject *__pyx_n_s_PartialDecomposition_getHashValu;
  PyObject *__pyx_n_s_PartialDecomposition_getID;
  PyObject *__pyx_n_s_PartialDecomposition_getLinkingv;
  PyObject *__pyx_n_s_PartialDecomposition_getMasterco;
  PyObject *__pyx_n_s_PartialDecomposition_getMasterva;
  PyObject *__pyx_n_s_PartialDecomposition_getNAncesto;
  PyObject *__pyx_n_s_PartialDecomposition_getNBlocks;
  PyObject *__pyx_n_s_PartialDecomposition_getNCoeffsF;
  PyObject *__pyx_n_s_PartialDecomposition_getNCoeffsF_2;
  PyObject *__pyx_n_s_PartialDecomposition_getNConss;
  PyObject *__pyx_n_s_PartialDecomposition_getNConssFo;
  PyObject *__pyx_n_s_PartialDecomposition_getNDetecto;
  PyObject *__pyx_n_s_PartialDecomposition_getNLinking;
  PyObject *__pyx_n_s_PartialDecomposition_getNMasterc;
  PyObject *__pyx_n_s_PartialDecomposition_getNMasterv;
  PyObject *__pyx_n_s_PartialDecomposition_getNNewBloc;
  PyObject *__pyx_n_s_PartialDecomposition_getNNewBloc_2;
  PyObject *__pyx_n_s_PartialDecomposition_getNOpencon;
  PyObject *__pyx_n_s_PartialDecomposition_getNOpenvar;
  PyObject *__pyx_n_s_PartialDecomposition_getNReps;
  PyObject *__pyx_n_s_PartialDecomposition_getNStairli;
  PyObject *__pyx_n_s_PartialDecomposition_getNTotalSt;
  PyObject *__pyx_n_s_PartialDecomposition_getNVars;
  PyObject *__pyx_n_s_PartialDecomposition_getNVarsFor;
  PyObject *__pyx_n_s_PartialDecomposition_getNVarsFor_2;
  PyObject *__pyx_n_s_PartialDecomposition_getOpencons;
  PyObject *__pyx_n_s_PartialDecomposition_getOpenvars;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss_2;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss_3;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss_4;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss_5;
  PyObject *__pyx_n_s_PartialDecomposition_getPctConss_6;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsF;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsF_2;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsT;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsT_2;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsT_3;
  PyObject *__pyx_n_s_PartialDecomposition_getPctVarsT_4;
  PyObject *__pyx_n_s_PartialDecomposition_getRepForBl;
  PyObject *__pyx_n_s_PartialDecomposition_getRepVarma;
  PyObject *__pyx_n_s_PartialDecomposition_getScore;
  PyObject *__pyx_n_s_PartialDecomposition_getTranslat;
  PyObject *__pyx_n_s_PartialDecomposition_getUsergive;
  PyObject *__pyx_n_s_PartialDecomposition_getVarProbi;
  PyObject *__pyx_n_s_PartialDecomposition_getVarsForB;
  PyObject *__pyx_n_s_PartialDecomposition_hasSetppMas;
  PyObject *__pyx_n_s_PartialDecomposition_hasSetppcMa;
  PyObject *__pyx_n_s_PartialDecomposition_hasSetppcca;
  PyObject *__pyx_n_s_PartialDecomposition_isAssignedT;
  PyObject *__pyx_n_s_PartialDecomposition_isComplete;
  PyObject *__pyx_n_s_PartialDecomposition_isConsMaste;
  PyObject *__pyx_n_s_PartialDecomposition_isConsOpenc;
  PyObject *__pyx_n_s_PartialDecomposition_isTrivial;
  PyObject *__pyx_n_s_PartialDecomposition_isVarBlockv;
  PyObject *__pyx_n_s_PartialDecomposition_isVarLinkin;
  PyObject *__pyx_n_s_PartialDecomposition_isVarMaster;
  PyObject *__pyx_n_s_PartialDecomposition_isVarOpenva;
  PyObject *__pyx_n_s_PartialDecomposition_isVarStairl;
  PyObject *__pyx_n_s_PartialDecomposition_isVarStairl_2;
  PyObject *__pyx_kp_u_PartialDecomposition_nBlocks;
  PyObject *__pyx_n_s_PartialDecomposition_prepare;
  PyObject *__pyx_n_s_PartialDecomposition_refineToBlo;
  PyObject *__pyx_n_s_PartialDecomposition_refineToMas;
  PyObject *__pyx_n_s_PartialDecomposition_removeAnces;
  PyObject *__pyx_n_s_PartialDecomposition_removeMaste;
  PyObject *__pyx_n_s_PartialDecomposition_setAncestor;
  PyObject *__pyx_n_s_PartialDecomposition_setConsPart;
  PyObject *__pyx_n_s_PartialDecomposition_setConsToMa;
  PyObject *__pyx_n_s_PartialDecomposition_setDetector;
  PyObject *__pyx_n_s_PartialDecomposition_setDetector_2;
  PyObject *__pyx_n_s_PartialDecomposition_setDetector_3;
  PyObject *__pyx_n_s_PartialDecomposition_setDetector_4;
  PyObject *__pyx_n_s_PartialDecomposition_setFinished;
  PyObject *__pyx_n_s_PartialDecomposition_setFinished_2;
  PyObject *__pyx_n_s_PartialDecomposition_setNBlocks;
  PyObject *__pyx_n_s_PartialDecomposition_setPctConss;
  PyObject *__pyx_n_s_PartialDecomposition_setPctConss_2;
  PyObject *__pyx_n_s_PartialDecomposition_setPctConss_3;
  PyObject *__pyx_n_s_PartialDecomposition_setPctVarsF;
  PyObject *__pyx_n_s_PartialDecomposition_setPctVarsT;
  PyObject *__pyx_n_s_PartialDecomposition_setPctVarsT_2;
  PyObject *__pyx_n_s_PartialDecomposition_setStemsFro;
  PyObject *__pyx_n_s_PartialDecomposition_setTranslat;
  PyObject *__pyx_n_s_PartialDecomposition_setUsergive;
  PyObject *__pyx_n_s_PartialDecomposition_setVarParti;
  PyObject *__pyx_n_s_PartialDecomposition_setVarToBlo;
  PyObject *__pyx_n_s_PartialDecomposition_setVarToLin;
  PyObject *__pyx_n_s_PartialDecomposition_setVarToMas;
  PyObject *__pyx_n_s_PartialDecomposition_setVarToSta;
  PyObject *__pyx_n_s_PartialDecomposition_shouldCompl;
  PyObject *__pyx_n_s_PartialDecomposition_showVisuali;
  PyObject *__pyx_n_s_PartialDecomposition_sort;
  PyObject *__pyx_n_s_Path;
  PyObject *__pyx_n_s_PickleError;
  PyObject *__pyx_n_s_PricingSolver;
  PyObject *__pyx_n_s_PricingSolver___reduce_cython;
  PyObject *__pyx_n_s_PricingSolver___setstate_cython;
  PyObject *__pyx_n_s_PricingSolver_exitSolution;
  PyObject *__pyx_n_s_PricingSolver_exitSolver;
  PyObject *__pyx_n_s_PricingSolver_freeSolver;
  PyObject *__pyx_n_s_PricingSolver_initSolution;
  PyObject *__pyx_n_s_PricingSolver_initSolver;
  PyObject *__pyx_n_s_PricingSolver_solve;
  PyObject *__pyx_n_s_PricingSolver_solveHeuristic;
  PyObject *__pyx_n_s_PricingSolver_updateSolver;
  PyObject *__pyx_n_s_SOLVERLIMIT;
  PyObject *__pyx_n_s_Score;
  PyObject *__pyx_n_s_Score___reduce_cython;
  PyObject *__pyx_n_s_Score___setstate_cython;
  PyObject *__pyx_n_s_Score_scorecalculate;
  PyObject *__pyx_n_s_Score_scorefree;
  PyObject *__pyx_n_s_TemporaryDirectory;
  PyObject *__pyx_kp_u_The_value_of_the_key_newpartiald;
  PyObject *__pyx_n_s_TypeError;
  PyObject *__pyx_n_s_UNBOUNDED;
  PyObject *__pyx_n_s_UNKNOWN;
  PyObject *__pyx_n_s_ValueError;
  PyObject *__pyx_n_s_VarClassifier;
  PyObject *__pyx_n_s_VarClassifier___reduce_cython;
  PyObject *__pyx_n_s_VarClassifier___setstate_cython;
  PyObject *__pyx_n_s_VarClassifier_classify;
  PyObject *__pyx_n_s_VarClassifier_freeVarClassifier;
  PyObject *__pyx_n_s_VarPart;
  PyObject *__pyx_n_s_VarPart___reduce_cython;
  PyObject *__pyx_n_s_VarPart___setstate_cython;
  PyObject *__pyx_n_s_VarPart_addClass;
  PyObject *__pyx_n_s_VarPart_assignVarToClass;
  PyObject *__pyx_n_s_VarPart_getAllSubsets;
  PyObject *__pyx_n_s_VarPart_getClassDecompInfo;
  PyObject *__pyx_n_s_VarPart_getClassDescription;
  PyObject *__pyx_n_s_VarPart_getClassName;
  PyObject *__pyx_n_s_VarPart_getClassNameOfVar;
  PyObject *__pyx_n_s_VarPart_getClassOfVar;
  PyObject *__pyx_n_s_VarPart_getNClasses;
  PyObject *__pyx_n_s_VarPart_getNVars;
  PyObject *__pyx_n_s_VarPart_getNVarsOfClasses;
  PyObject *__pyx_n_s_VarPart_getName;
  PyObject *__pyx_n_s_VarPart_isVarClassified;
  PyObject *__pyx_n_s_VarPart_reduceClasses;
  PyObject *__pyx_n_s_VarPart_removeEmptyClasses;
  PyObject *__pyx_n_s_VarPart_setClassDecompInfo;
  PyObject *__pyx_n_s_VarPart_setClassDescription;
  PyObject *__pyx_n_s_VarPart_setClassName;
  PyObject *__pyx_kp_u_Varclassifier_0_yields_a_classif;
  PyObject *__pyx_n_s_Warning;
  PyObject *__pyx_n_s__20;
  PyObject *__pyx_n_s__515;
  PyObject *__pyx_kp_u__6;
  PyObject *__pyx_kp_u__8;
  PyObject *__pyx_n_s_addAncestorID;
  PyObject *__pyx_n_s_addBlock;
  PyObject *__pyx_n_s_addCandidatesNBlocksNVotes;
  PyObject *__pyx_n_s_addClass;
  PyObject *__pyx_n_s_addClockTime;
  PyObject *__pyx_n_s_addCol;
  PyObject *__pyx_n_s_addConsPartition;
  PyObject *__pyx_n_s_addDecChangesFromAncestor;
  PyObject *__pyx_n_s_addDecomposition;
  PyObject *__pyx_n_s_addDecompositionFromConss;
  PyObject *__pyx_n_s_addDetectorChainInfo;
  PyObject *__pyx_n_s_addNNewBlocks;
  PyObject *__pyx_n_s_addPartialdecToAncestor;
  PyObject *__pyx_n_s_addPartialdecToFinished;
  PyObject *__pyx_n_s_addPartialdecToFinishedUnchecked;
  PyObject *__pyx_n_s_addPartialdecToOpen;
  PyObject *__pyx_n_s_addPctConssFromFree;
  PyObject *__pyx_n_s_addPctConssToBlock;
  PyObject *__pyx_n_s_addPctConssToBorder;
  PyObject *__pyx_n_s_addPctVarsFromFree;
  PyObject *__pyx_n_s_addPctVarsToBlock;
  PyObject *__pyx_n_s_addPctVarsToBorder;
  PyObject *__pyx_n_s_addPreexistingPartialDecompositi;
  PyObject *__pyx_n_s_addVar;
  PyObject *__pyx_n_s_addVarPartition;
  PyObject *__pyx_n_s_aggInfoCalculated;
  PyObject *__pyx_n_s_all;
  PyObject *__pyx_kp_u_alldecompositions;
  PyObject *__pyx_n_s_alreadyAssignedConssToBlocks;
  PyObject *__pyx_n_s_ancestor;
  PyObject *__pyx_n_s_ancestor_id;
  PyObject *__pyx_n_s_args;
  PyObject *__pyx_n_s_assignConsToClass;
  PyObject *__pyx_n_s_assignCurrentStairlinking;
  PyObject *__pyx_n_s_assignOpenConssToMaster;
  PyObject *__pyx_n_s_assignSmallestComponentsButOneCo;
  PyObject *__pyx_n_s_assignVarToClass;
  PyObject *__pyx_n_s_asyncio_coroutines;
  PyObject *__pyx_n_s_block;
  PyObject *__pyx_n_s_block1_id;
  PyObject *__pyx_n_s_block2_id;
  PyObject *__pyx_n_s_block_conss;
  PyObject *__pyx_n_s_block_id;
  PyObject *__pyx_n_s_blockrepid;
  PyObject *__pyx_kp_u_border_area;
  PyObject *__pyx_n_s_both;
  PyObject *__pyx_n_s_buffer;
  PyObject *__pyx_n_s_buildDecChainString;
  PyObject *__pyx_n_s_c;
  PyObject *__pyx_n_s_c_buffer;
  PyObject *__pyx_n_s_c_consclassifiername;
  PyObject *__pyx_n_s_c_decchar;
  PyObject *__pyx_n_s_c_decinfo;
  PyObject *__pyx_n_s_c_desc;
  PyObject *__pyx_n_s_c_detectorname;
  PyObject *__pyx_n_s_c_directory;
  PyObject *__pyx_n_s_c_extension;
  PyObject *__pyx_n_s_c_name;
  PyObject *__pyx_n_s_c_scorename;
  PyObject *__pyx_n_s_c_shortname;
  PyObject *__pyx_n_s_c_solvername;
  PyObject *__pyx_n_s_c_vals;
  PyObject *__pyx_n_s_c_varclassifiername;
  PyObject *__pyx_n_s_c_vars;
  PyObject *__pyx_n_s_calcAggregationInformation;
  PyObject *__pyx_n_s_calcStairlinkingVars;
  PyObject *__pyx_n_s_candidate;
  PyObject *__pyx_n_s_candidates;
  PyObject *__pyx_n_s_candidatesNBlocks;
  PyObject *__pyx_kp_u_cannot_create_Column_with_GCG_CO;
  PyObject *__pyx_kp_u_cannot_create_ConsPart_with_Cons;
  PyObject *__pyx_kp_u_cannot_create_DetProbData_with_D;
  PyObject *__pyx_kp_u_cannot_create_Model_with_SCIP_NU;
  PyObject *__pyx_kp_u_cannot_create_PartialDecompositi;
  PyObject *__pyx_kp_u_cannot_create_VarPart_with_VarPa;
  PyObject *__pyx_n_s_checkAllConssAssigned;
  PyObject *__pyx_n_s_checkConsistency;
  PyObject *__pyx_n_s_class;
  PyObject *__pyx_n_s_class_getitem;
  PyObject *__pyx_n_u_classic;
  PyObject *__pyx_n_s_classificationtime;
  PyObject *__pyx_n_s_classify;
  PyObject *__pyx_n_s_classindex;
  PyObject *__pyx_n_s_clearAncestorPartialdecs;
  PyObject *__pyx_n_s_clearCurrentPartialdecs;
  PyObject *__pyx_n_s_clearFinishedPartialdecs;
  PyObject *__pyx_n_s_cline_in_traceback;
  PyObject *__pyx_n_s_clocktime;
  PyObject *__pyx_n_s_col;
  PyObject *__pyx_n_s_collections_abc;
  PyObject *__pyx_n_s_complete;
  PyObject *__pyx_n_s_completeByConnected;
  PyObject *__pyx_n_s_completeByConnectedConssAdjacenc;
  PyObject *__pyx_n_s_completeGreedily;
  PyObject *__pyx_n_s_comppartialdec;
  PyObject *__pyx_n_s_cons;
  PyObject *__pyx_n_s_consIndex;
  PyObject *__pyx_n_s_consclassesmaster;
  PyObject *__pyx_n_s_consclassifier;
  PyObject *__pyx_n_s_consclassifiername;
  PyObject *__pyx_n_s_consclassifiers;
  PyObject *__pyx_n_s_considerImplicits;
  PyObject *__pyx_n_s_conspartitioncollection;
  PyObject *__pyx_n_s_conspartitioncollection_element;
  PyObject *__pyx_n_s_conspartitioncollection_ptr;
  PyObject *__pyx_n_s_conspatitionptr;
  PyObject *__pyx_n_s_conss;
  PyObject *__pyx_n_s_consschanged;
  PyObject *__pyx_n_s_copy;
  PyObject *__pyx_n_s_copyPartitionStatistics;
  PyObject *__pyx_n_s_copy_2;
  PyObject *__pyx_n_s_cpp_ancestor;
  PyObject *__pyx_n_s_cpp_ancestor_id;
  PyObject *__pyx_n_s_cpp_block;
  PyObject *__pyx_n_s_cpp_block1_id;
  PyObject *__pyx_n_s_cpp_block2_id;
  PyObject *__pyx_n_s_cpp_block_id;
  PyObject *__pyx_n_s_cpp_blockrepid;
  PyObject *__pyx_n_s_cpp_candidates;
  PyObject *__pyx_n_s_cpp_candidatesNBlocks;
  PyObject *__pyx_n_s_cpp_classificationtime;
  PyObject *__pyx_n_s_cpp_clocktime;
  PyObject *__pyx_n_s_cpp_comppartialdec;
  PyObject *__pyx_n_s_cpp_consclassesmaster;
  PyObject *__pyx_n_s_cpp_consindex;
  PyObject *__pyx_n_s_cpp_conspartitioncollection;
  PyObject *__pyx_n_s_cpp_dec_id;
  PyObject *__pyx_n_s_cpp_detailLevel;
  PyObject *__pyx_n_s_cpp_detectorchain_id;
  PyObject *__pyx_n_s_cpp_detectorchainindex;
  PyObject *__pyx_n_s_cpp_finished;
  PyObject *__pyx_n_s_cpp_firstblock_id;
  PyObject *__pyx_n_s_cpp_fromorig;
  PyObject *__pyx_n_s_cpp_ignoreDetectionLimits;
  PyObject *__pyx_n_s_cpp_nblocks;
  PyObject *__pyx_n_s_cpp_nblockscandidatescalctime;
  PyObject *__pyx_n_s_cpp_newlist;
  PyObject *__pyx_n_s_cpp_newvector;
  PyObject *__pyx_n_s_cpp_nnewblocks;
  PyObject *__pyx_n_s_cpp_otherdata;
  PyObject *__pyx_n_s_cpp_otherpartialdec;
  PyObject *__pyx_n_s_cpp_otherpartialdecs;
  PyObject *__pyx_n_s_cpp_partialdec;
  PyObject *__pyx_n_s_cpp_partialdecs;
  PyObject *__pyx_n_s_cpp_partition;
  PyObject *__pyx_n_s_cpp_pct;
  PyObject *__pyx_n_s_cpp_postprocessingtime;
  PyObject *__pyx_n_s_cpp_rep_id;
  PyObject *__pyx_n_s_cpp_repid;
  PyObject *__pyx_n_s_cpp_translatingtime;
  PyObject *__pyx_n_s_cpp_varclasseslinking;
  PyObject *__pyx_n_s_cpp_varclassesmaster;
  PyObject *__pyx_n_s_cpp_variables;
  PyObject *__pyx_n_s_cpp_varid;
  PyObject *__pyx_n_s_cpp_varindex;
  PyObject *__pyx_n_s_cpp_varpartitioncollection;
  PyObject *__pyx_n_s_createConsPart;
  PyObject *__pyx_n_s_createConssAdjacency;
  PyObject *__pyx_n_s_createDecomposition;
  PyObject *__pyx_n_s_createDirectory;
  PyObject *__pyx_n_s_createGcgCol;
  PyObject *__pyx_n_s_createVarPart;
  PyObject *__pyx_n_s_createscip;
  PyObject *__pyx_n_s_dec;
  PyObject *__pyx_n_u_dec;
  PyObject *__pyx_n_s_dec_id;
  PyObject *__pyx_n_s_decchar;
  PyObject *__pyx_n_s_decids;
  PyObject *__pyx_n_s_decinfo;
  PyObject *__pyx_n_s_decomp;
  PyObject *__pyx_n_s_decompInfo;
  PyObject *__pyx_n_s_decomps;
  PyObject *__pyx_n_s_deleteEmptyBlocks;
  PyObject *__pyx_n_s_deleteOpencons;
  PyObject *__pyx_n_s_deleteOpenvar;
  PyObject *__pyx_n_s_desc;
  PyObject *__pyx_n_s_det_prob_data;
  PyObject *__pyx_n_s_detailLevel;
  PyObject *__pyx_n_s_detect;
  PyObject *__pyx_kp_u_detection_classification_varclas;
  PyObject *__pyx_kp_u_detection_detectors_enabled;
  PyObject *__pyx_kp_u_detection_detectors_finishingena;
  PyObject *__pyx_kp_u_detection_detectors_postprocessi;
  PyObject *__pyx_n_s_detector;
  PyObject *__pyx_n_s_detector_name;
  PyObject *__pyx_n_s_detectorchain_id;
  PyObject *__pyx_n_s_detectorchainindex;
  PyObject *__pyx_n_s_detectorname;
  PyObject *__pyx_n_s_detectors;
  PyObject *__pyx_n_s_detprobdata;
  PyObject *__pyx_n_s_dict;
  PyObject *__pyx_n_s_dict_2;
  PyObject *__pyx_n_s_directory;
  PyObject *__pyx_kp_u_disable;
  PyObject *__pyx_n_s_displayInfo;
  PyObject *__pyx_n_s_dualsolconv;
  PyObject *__pyx_kp_u_enable;
  PyObject *__pyx_n_s_enabled;
  PyObject *__pyx_n_s_enabledfinishing;
  PyObject *__pyx_n_s_enabledpostprocessing;
  PyObject *__pyx_n_s_enter;
  PyObject *__pyx_n_s_enumerate;
  PyObject *__pyx_n_s_exactEnabled;
  PyObject *__pyx_n_s_exist_ok;
  PyObject *__pyx_n_s_exit;
  PyObject *__pyx_n_s_exitDetector;
  PyObject *__pyx_n_s_exitSolution;
  PyObject *__pyx_n_s_exitSolver;
  PyObject *__pyx_kp_u_experimental_benders_score;
  PyObject *__pyx_n_s_extension;
  PyObject *__pyx_n_s_findVarsLinkingToMaster;
  PyObject *__pyx_n_s_findVarsLinkingToStairlinking;
  PyObject *__pyx_n_s_finishPartialdec;
  PyObject *__pyx_n_s_finished;
  PyObject *__pyx_n_s_firstblock_id;
  PyObject *__pyx_n_s_fixConsToBlock;
  PyObject *__pyx_n_s_fixConsToBlockId;
  PyObject *__pyx_n_s_fixConsToMaster;
  PyObject *__pyx_n_s_fixConssToBlock;
  PyObject *__pyx_n_s_fixConssToBlockId;
  PyObject *__pyx_n_s_fixConssToMaster;
  PyObject *__pyx_n_s_fixVarToLinking;
  PyObject *__pyx_n_s_fixVarToMaster;
  PyObject *__pyx_n_s_fixVarToStairlinking;
  PyObject *__pyx_n_s_format;
  PyObject *__pyx_n_s_freeConsClassifier;
  PyObject *__pyx_n_s_freeDetector;
  PyObject *__pyx_n_s_freeSolver;
  PyObject *__pyx_n_s_freeTemporaryData;
  PyObject *__pyx_n_s_freeVarClassifier;
  PyObject *__pyx_n_s_freqcallround;
  PyObject *__pyx_n_s_freqcallroundoriginal;
  PyObject *__pyx_n_s_fromorig;
  PyObject *__pyx_kp_u_gc;
  PyObject *__pyx_n_s_gcg_col;
  PyObject *__pyx_n_s_get;
  PyObject *__pyx_n_s_getAllSubsets;
  PyObject *__pyx_n_s_getAncestorID;
  PyObject *__pyx_n_s_getAncestorList;
  PyObject *__pyx_n_s_getAncestorPartialdec;
  PyObject *__pyx_n_s_getBlocksForRep;
  PyObject *__pyx_n_s_getClassDecompInfo;
  PyObject *__pyx_n_s_getClassDescription;
  PyObject *__pyx_n_s_getClassName;
  PyObject *__pyx_n_s_getClassNameOfCons;
  PyObject *__pyx_n_s_getClassNameOfVar;
  PyObject *__pyx_n_s_getClassOfCons;
  PyObject *__pyx_n_s_getClassOfVar;
  PyObject *__pyx_n_s_getCons;
  PyObject *__pyx_n_s_getConsPartition;
  PyObject *__pyx_n_s_getConsPartitions;
  PyObject *__pyx_n_s_getConssForBlock;
  PyObject *__pyx_n_s_getConssForBlocks;
  PyObject *__pyx_n_s_getConssForCons;
  PyObject *__pyx_n_s_getConssForVar;
  PyObject *__pyx_n_s_getDetectorClockTime;
  PyObject *__pyx_n_s_getDetectorClockTimes;
  PyObject *__pyx_n_s_getDetectorchainInfo;
  PyObject *__pyx_n_s_getDetprobdata;
  PyObject *__pyx_n_s_getDetprobdataOrig;
  PyObject *__pyx_n_s_getDetprobdataPresolved;
  PyObject *__pyx_n_s_getDualbound;
  PyObject *__pyx_n_s_getFinishedByFinisher;
  PyObject *__pyx_n_s_getFinishedPartialdec;
  PyObject *__pyx_n_s_getFinishedPartialdecs;
  PyObject *__pyx_n_s_getHashValue;
  PyObject *__pyx_n_s_getID;
  PyObject *__pyx_n_s_getIndexForCons;
  PyObject *__pyx_n_s_getIndexForVar;
  PyObject *__pyx_n_s_getLinkingvars;
  PyObject *__pyx_n_s_getMasterProb;
  PyObject *__pyx_n_s_getMasterconss;
  PyObject *__pyx_n_s_getMastervars;
  PyObject *__pyx_n_s_getModel;
  PyObject *__pyx_n_s_getNAncestorPartialdecs;
  PyObject *__pyx_n_s_getNAncestors;
  PyObject *__pyx_n_s_getNBlocks;
  PyObject *__pyx_n_s_getNClasses;
  PyObject *__pyx_n_s_getNCoeffsForBlock;
  PyObject *__pyx_n_s_getNCoeffsForMaster;
  PyObject *__pyx_n_s_getNConsClassifiers;
  PyObject *__pyx_n_s_getNConsPartitions;
  PyObject *__pyx_n_s_getNConss;
  PyObject *__pyx_n_s_getNConssForBlock;
  PyObject *__pyx_n_s_getNConssForCons;
  PyObject *__pyx_n_s_getNConssForVar;
  PyObject *__pyx_n_s_getNConssOfClasses;
  PyObject *__pyx_n_s_getNDetectors;
  PyObject *__pyx_n_s_getNFinishedPartialdecs;
  PyObject *__pyx_n_s_getNLinkingvars;
  PyObject *__pyx_n_s_getNMasterconss;
  PyObject *__pyx_n_s_getNMastervars;
  PyObject *__pyx_n_s_getNNewBlocks;
  PyObject *__pyx_n_s_getNNewBlocksVector;
  PyObject *__pyx_n_s_getNNonzeros;
  PyObject *__pyx_n_s_getNOpenPartialdecs;
  PyObject *__pyx_n_s_getNOpenconss;
  PyObject *__pyx_n_s_getNOpenvars;
  PyObject *__pyx_n_s_getNPartialdecs;
  PyObject *__pyx_n_s_getNReps;
  PyObject *__pyx_n_s_getNStairlinkingvars;
  PyObject *__pyx_n_s_getNTotalStairlinkingvars;
  PyObject *__pyx_n_s_getNVarClassifiers;
  PyObject *__pyx_n_s_getNVarPartitions;
  PyObject *__pyx_n_s_getNVars;
  PyObject *__pyx_n_s_getNVarsForBlock;
  PyObject *__pyx_n_s_getNVarsForBlocks;
  PyObject *__pyx_n_s_getNVarsForCons;
  PyObject *__pyx_n_s_getNVarsOfClasses;
  PyObject *__pyx_n_s_getName;
  PyObject *__pyx_n_s_getOpenPartialdecs;
  PyObject *__pyx_n_s_getOpenconss;
  PyObject *__pyx_n_s_getOpenvars;
  PyObject *__pyx_n_s_getOrigVarsFixedZero;
  PyObject *__pyx_n_s_getOrigvars;
  PyObject *__pyx_n_s_getPartDecompFromID;
  PyObject *__pyx_n_s_getPctConssFromFree;
  PyObject *__pyx_n_s_getPctConssFromFreeVector;
  PyObject *__pyx_n_s_getPctConssToBlock;
  PyObject *__pyx_n_s_getPctConssToBlockVector;
  PyObject *__pyx_n_s_getPctConssToBorder;
  PyObject *__pyx_n_s_getPctConssToBorderVector;
  PyObject *__pyx_n_s_getPctVarsFromFree;
  PyObject *__pyx_n_s_getPctVarsFromFreeVector;
  PyObject *__pyx_n_s_getPctVarsToBlock;
  PyObject *__pyx_n_s_getPctVarsToBlockVector;
  PyObject *__pyx_n_s_getPctVarsToBorder;
  PyObject *__pyx_n_s_getPctVarsToBorderVector;
  PyObject *__pyx_n_s_getRelevantConss;
  PyObject *__pyx_n_s_getRelevantVars;
  PyObject *__pyx_n_s_getRepForBlock;
  PyObject *__pyx_n_s_getRepVarmap;
  PyObject *__pyx_n_s_getScore;
  PyObject *__pyx_n_s_getSortedCandidatesNBlocks;
  PyObject *__pyx_n_s_getStage;
  PyObject *__pyx_n_s_getTranslatedpartialdecid;
  PyObject *__pyx_n_s_getUsergiven;
  PyObject *__pyx_n_s_getVal;
  PyObject *__pyx_n_s_getValsForCons;
  PyObject *__pyx_n_s_getVar;
  PyObject *__pyx_n_s_getVarPartition;
  PyObject *__pyx_n_s_getVarPartitions;
  PyObject *__pyx_n_s_getVarProbindexForBlock;
  PyObject *__pyx_n_s_getVarsForBlock;
  PyObject *__pyx_n_s_getVarsForCons;
  PyObject *__pyx_n_s_getstate;
  PyObject *__pyx_n_s_hasSetppMaster;
  PyObject *__pyx_n_s_hasSetppcMaster;
  PyObject *__pyx_n_s_hasSetppccardMaster;
  PyObject *__pyx_n_s_heuristicEnabled;
  PyObject *__pyx_n_s_i;
  PyObject *__pyx_n_s_id;
  PyObject *__pyx_n_s_idx;
  PyObject *__pyx_n_s_ignoreDetectionLimits;
  PyObject *__pyx_n_s_import;
  PyObject *__pyx_n_s_includeConsClassifier;
  PyObject *__pyx_n_s_includeDefaultPlugins;
  PyObject *__pyx_n_s_includeDetector;
  PyObject *__pyx_n_s_includePricingSolver;
  PyObject *__pyx_n_s_includeScore;
  PyObject *__pyx_n_s_includeVarClassifier;
  PyObject *__pyx_n_s_index;
  PyObject *__pyx_n_s_initDetector;
  PyObject *__pyx_n_s_initSolution;
  PyObject *__pyx_n_s_initSolver;
  PyObject *__pyx_n_s_initializing;
  PyObject *__pyx_n_s_isAssignedToOrigProb;
  PyObject *__pyx_n_s_isComplete;
  PyObject *__pyx_n_s_isConsCardinalityCons;
  PyObject *__pyx_n_s_isConsClassified;
  PyObject *__pyx_n_s_isConsMastercons;
  PyObject *__pyx_n_s_isConsOpencons;
  PyObject *__pyx_n_s_isConsSetpp;
  PyObject *__pyx_n_s_isConsSetppc;
  PyObject *__pyx_n_s_isConssAdjInitialized;
  PyObject *__pyx_n_s_isPartialdecDuplicateofFinished;
  PyObject *__pyx_n_s_isTrivial;
  PyObject *__pyx_n_s_isVarBlockvarOfBlock;
  PyObject *__pyx_n_s_isVarClassified;
  PyObject *__pyx_n_s_isVarLinkingvar;
  PyObject *__pyx_n_s_isVarMastervar;
  PyObject *__pyx_n_s_isVarOpenvar;
  PyObject *__pyx_n_s_isVarStairlinkingvar;
  PyObject *__pyx_n_s_isVarStairlinkingvarOfBlock;
  PyObject *__pyx_n_s_is_coroutine;
  PyObject *__pyx_n_s_is_enabled;
  PyObject *__pyx_kp_u_is_not_supported_Only_svg_and_p;
  PyObject *__pyx_n_s_is_presolved;
  PyObject *__pyx_kp_u_isenabled;
  PyObject *__pyx_n_s_isray;
  PyObject *__pyx_n_s_joinpath;
  PyObject *__pyx_n_s_kwargs;
  PyObject *__pyx_n_s_linking;
  PyObject *__pyx_n_s_listConsClassifiers;
  PyObject *__pyx_n_s_listDecompositions;
  PyObject *__pyx_n_s_listDetectors;
  PyObject *__pyx_n_s_listPricingSolvers;
  PyObject *__pyx_n_s_listScores;
  PyObject *__pyx_n_s_listVarClassifiers;
  PyObject *__pyx_n_s_lower;
  PyObject *__pyx_n_u_lowerbound;
  PyObject *__pyx_n_s_main;
  PyObject *__pyx_n_s_master;
  PyObject *__pyx_n_s_master_conss;
  PyObject *__pyx_n_s_master_prob;
  PyObject *__pyx_n_s_mastervars;
  PyObject *__pyx_kp_u_maxForWhiteScore;
  PyObject *__pyx_n_s_maxForWhiteScore_2;
  PyObject *__pyx_n_s_maxNumberOfClasses;
  PyObject *__pyx_kp_u_max_foreseeing_white;
  PyObject *__pyx_kp_u_max_foreseeing_white_with_aggreg;
  PyObject *__pyx_n_s_maxcallround;
  PyObject *__pyx_n_s_maxcallroundoriginal;
  PyObject *__pyx_n_s_mincallround;
  PyObject *__pyx_n_s_mincallroundoriginal;
  PyObject *__pyx_n_s_mkdir;
  PyObject *__pyx_n_s_mp;
  PyObject *__pyx_kp_u_nLinkingVars;
  PyObject *__pyx_kp_u_nMasterConss;
  PyObject *__pyx_kp_u_nMasterVars;
  PyObject *__pyx_n_s_n_consclassifiers;
  PyObject *__pyx_n_s_n_detectors;
  PyObject *__pyx_n_s_n_pricing_solvers;
  PyObject *__pyx_n_s_n_scores;
  PyObject *__pyx_n_s_n_varclassifiers;
  PyObject *__pyx_n_s_n_vars;
  PyObject *__pyx_n_s_name;
  PyObject *__pyx_n_s_name_2;
  PyObject *__pyx_n_s_nblocks;
  PyObject *__pyx_n_s_nblockscandidatescalctime;
  PyObject *__pyx_n_s_nclasses;
  PyObject *__pyx_n_s_ncons;
  PyObject *__pyx_n_s_nconsparts;
  PyObject *__pyx_n_s_new;
  PyObject *__pyx_n_s_newlist;
  PyObject *__pyx_n_u_newpartialdecs;
  PyObject *__pyx_n_s_newvector;
  PyObject *__pyx_n_s_nnewblocks;
  PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
  PyObject *__pyx_n_s_npartialdecs;
  PyObject *__pyx_n_s_nvars;
  PyObject *__pyx_n_s_nvotes;
  PyObject *__pyx_n_s_only_master;
  PyObject *__pyx_n_s_only_pricing;
  PyObject *__pyx_n_s_optimize;
  PyObject *__pyx_n_s_original;
  PyObject *__pyx_n_s_originalvars;
  PyObject *__pyx_n_s_otherdata;
  PyObject *__pyx_n_s_otherpartialdec;
  PyObject *__pyx_n_s_otherpartialdecs;
  PyObject *__pyx_n_s_otherpartialdecs_element;
  PyObject *__pyx_n_s_otherpartialdecs_ptr;
  PyObject *__pyx_n_s_parents;
  PyObject *__pyx_n_s_partialdec;
  PyObject *__pyx_n_s_partialdecIsNoDuplicateOfPartial;
  PyObject *__pyx_n_s_partialdecindex;
  PyObject *__pyx_n_s_partialdecs;
  PyObject *__pyx_n_s_partialdecs_element;
  PyObject *__pyx_n_s_partialdecs_ptr;
  PyObject *__pyx_n_s_partition;
  PyObject *__pyx_n_s_partitionIndex;
  PyObject *__pyx_n_s_pathlib;
  PyObject *__pyx_n_s_pct;
  PyObject *__pyx_n_s_pd;
  PyObject *__pyx_n_s_pickle;
  PyObject *__pyx_n_u_png;
  PyObject *__pyx_n_s_postprocessPartialdec;
  PyObject *__pyx_n_s_postprocessingtime;
  PyObject *__pyx_kp_u_ppc_max_white;
  PyObject *__pyx_kp_u_ppc_max_white_with_aggregation_i;
  PyObject *__pyx_n_s_prepare;
  PyObject *__pyx_n_s_presolve;
  PyObject *__pyx_n_s_presolved;
  PyObject *__pyx_n_s_pricingSolver;
  PyObject *__pyx_n_s_pricing_solver_name;
  PyObject *__pyx_n_s_pricing_solvers;
  PyObject *__pyx_n_s_pricingprob;
  PyObject *__pyx_kp_u_pricingsolver_exactenabled;
  PyObject *__pyx_kp_u_pricingsolver_heurenabled;
  PyObject *__pyx_n_s_print;
  PyObject *__pyx_n_s_printStatistics;
  PyObject *__pyx_n_s_printVersion;
  PyObject *__pyx_n_s_priority;
  PyObject *__pyx_n_s_probnr;
  PyObject *__pyx_n_s_propagatePartialdec;
  PyObject *__pyx_n_s_proxy;
  PyObject *__pyx_n_s_pyGCGCol;
  PyObject *__pyx_n_s_pyVar;
  PyObject *__pyx_n_s_pygcgopt_gcg;
  PyObject *__pyx_n_s_pygcgopt_util;
  PyObject *__pyx_n_s_pyscipopt_scip;
  PyObject *__pyx_n_s_pyx_PickleError;
  PyObject *__pyx_n_s_pyx_checksum;
  PyObject *__pyx_n_s_pyx_result;
  PyObject *__pyx_n_s_pyx_state;
  PyObject *__pyx_n_s_pyx_type;
  PyObject *__pyx_n_s_pyx_unpickle_ConsClassifier;
  PyObject *__pyx_n_s_pyx_unpickle_Detector;
  PyObject *__pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF;
  PyObject *__pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA;
  PyObject *__pyx_n_s_pyx_unpickle_PY_USERGIVEN;
  PyObject *__pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO;
  PyObject *__pyx_n_s_pyx_unpickle_PricingSolver;
  PyObject *__pyx_n_s_pyx_unpickle_Score;
  PyObject *__pyx_n_s_pyx_unpickle_VarClassifier;
  PyObject *__pyx_n_s_pyx_vtable;
  PyObject *__pyx_n_s_r;
  PyObject *__pyx_n_s_range;
  PyObject *__pyx_n_s_read_bytes;
  PyObject *__pyx_n_s_read_text;
  PyObject *__pyx_n_s_redcost;
  PyObject *__pyx_n_s_reduce;
  PyObject *__pyx_n_s_reduceClasses;
  PyObject *__pyx_n_s_reduce_cython;
  PyObject *__pyx_n_s_reduce_ex;
  PyObject *__pyx_n_s_refineToBlocks;
  PyObject *__pyx_n_s_refineToMaster;
  PyObject *__pyx_n_s_removeAncestorID;
  PyObject *__pyx_n_s_removeEmptyClasses;
  PyObject *__pyx_n_s_removeMastercons;
  PyObject *__pyx_n_s_rep_id;
  PyObject *__pyx_n_s_repid;
  PyObject *__pyx_n_s_repr_png;
  PyObject *__pyx_n_s_repr_svg;
  PyObject *__pyx_n_s_result;
  PyObject *__pyx_n_u_result;
  PyObject *__pyx_n_s_row;
  PyObject *__pyx_n_s_scip;
  PyObject *__pyx_n_s_score;
  PyObject *__pyx_n_s_scorecalculate;
  PyObject *__pyx_n_s_scorefree;
  PyObject *__pyx_n_s_scorename;
  PyObject *__pyx_n_s_scores;
  PyObject *__pyx_n_u_scorevalue;
  PyObject *__pyx_n_s_self;
  PyObject *__pyx_kp_s_self__scip_self__valid_cannot_be;
  PyObject *__pyx_kp_s_self_consPartition_cannot_be_con;
  PyObject *__pyx_kp_s_self_gcg_col_cannot_be_converted;
  PyObject *__pyx_kp_s_self_thisptr_cannot_be_converted;
  PyObject *__pyx_kp_s_self_varPartition_cannot_be_conv;
  PyObject *__pyx_n_s_setAncestorList;
  PyObject *__pyx_n_s_setBoolParam;
  PyObject *__pyx_n_s_setClassDecompInfo;
  PyObject *__pyx_n_s_setClassDescription;
  PyObject *__pyx_n_s_setClassName;
  PyObject *__pyx_n_s_setConsPartitionStatistics;
  PyObject *__pyx_n_s_setConsToMaster;
  PyObject *__pyx_n_s_setDetectorClockTimes;
  PyObject *__pyx_n_s_setDetectorEnabled;
  PyObject *__pyx_n_s_setDetectorFinished;
  PyObject *__pyx_n_s_setDetectorFinishedOrig;
  PyObject *__pyx_n_s_setDetectorFinishingEnabled;
  PyObject *__pyx_n_s_setDetectorPostprocessingEnabled;
  PyObject *__pyx_n_s_setDetectorPropagated;
  PyObject *__pyx_n_s_setFinishedByFinisher;
  PyObject *__pyx_n_s_setFinishedByFinisherOrig;
  PyObject *__pyx_n_s_setGCGSeparating;
  PyObject *__pyx_n_s_setNBlocks;
  PyObject *__pyx_n_s_setParamAggressive;
  PyObject *__pyx_n_s_setParamDefault;
  PyObject *__pyx_n_s_setParamFast;
  PyObject *__pyx_n_s_setPctConssFromFreeVector;
  PyObject *__pyx_n_s_setPctConssToBlockVector;
  PyObject *__pyx_n_s_setPctConssToBorderVector;
  PyObject *__pyx_n_s_setPctVarsFromFreeVector;
  PyObject *__pyx_n_s_setPctVarsToBlockVector;
  PyObject *__pyx_n_s_setPctVarsToBorderVector;
  PyObject *__pyx_n_s_setPricingSolverEnabled;
  PyObject *__pyx_n_s_setPricingSolverExactEnabled;
  PyObject *__pyx_n_s_setPricingSolverHeuristicEnabled;
  PyObject *__pyx_n_s_setStemsFromOrig;
  PyObject *__pyx_n_s_setTranslatedpartialdecid;
  PyObject *__pyx_n_s_setUsergiven;
  PyObject *__pyx_n_s_setVarClassifierEnabled;
  PyObject *__pyx_n_s_setVarPartitionStatistics;
  PyObject *__pyx_n_s_setVarToBlockId;
  PyObject *__pyx_n_s_setVarToLinking;
  PyObject *__pyx_n_s_setVarToMaster;
  PyObject *__pyx_n_s_setVarToStairlinking;
  PyObject *__pyx_n_s_setstate;
  PyObject *__pyx_n_s_setstate_cython;
  PyObject *__pyx_n_s_setting;
  PyObject *__pyx_n_s_shortname;
  PyObject *__pyx_n_s_shouldCompletedByConsToMaster;
  PyObject *__pyx_n_s_showVisualization;
  PyObject *__pyx_n_s_skip;
  PyObject *__pyx_n_s_solve;
  PyObject *__pyx_n_s_solveHeuristic;
  PyObject *__pyx_n_s_solvername;
  PyObject *__pyx_n_s_sort;
  PyObject *__pyx_n_s_sortFinishedForScore;
  PyObject *__pyx_n_s_spec;
  PyObject *__pyx_kp_s_src_pygcgopt_consclassifier_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_decomposition_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_detector_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_detprobdata_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_gcg_pyx;
  PyObject *__pyx_kp_s_src_pygcgopt_partition_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_pricing_solver_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_score_pxi;
  PyObject *__pyx_kp_s_src_pygcgopt_varclassifier_pxi;
  PyObject *__pyx_n_s_state;
  PyObject *__pyx_n_u_status;
  PyObject *__pyx_n_s_str_conversion;
  PyObject *__pyx_kp_s_stringsource;
  PyObject *__pyx_kp_u_strong_decomposition_score;
  PyObject *__pyx_n_s_super;
  PyObject *__pyx_n_u_svg;
  PyObject *__pyx_n_s_tempfile;
  PyObject *__pyx_n_s_test;
  PyObject *__pyx_n_s_translatePartialdecs;
  PyObject *__pyx_n_s_translatingtime;
  PyObject *__pyx_n_s_typing;
  PyObject *__pyx_n_s_update;
  PyObject *__pyx_n_s_updateSolver;
  PyObject *__pyx_n_s_use_setstate;
  PyObject *__pyx_n_s_usefulrecall;
  PyObject *__pyx_n_s_v;
  PyObject *__pyx_n_s_vals;
  PyObject *__pyx_n_s_value;
  PyObject *__pyx_n_s_var;
  PyObject *__pyx_n_s_varIndex;
  PyObject *__pyx_n_s_varbndschanged;
  PyObject *__pyx_n_s_varclasseslinking;
  PyObject *__pyx_n_s_varclassesmaster;
  PyObject *__pyx_n_s_varclassifier;
  PyObject *__pyx_n_s_varclassifier_name;
  PyObject *__pyx_n_s_varclassifiername;
  PyObject *__pyx_n_s_varclassifiers;
  PyObject *__pyx_n_s_variables;
  PyObject *__pyx_n_s_varid;
  PyObject *__pyx_n_s_varobjschanged;
  PyObject *__pyx_n_s_varpartitioncollection;
  PyObject *__pyx_n_s_varpartitioncollection_element;
  PyObject *__pyx_n_s_varpartitioncollection_ptr;
  PyObject *__pyx_n_s_varpatitionptr;
  PyObject *__pyx_n_s_vars;
  PyObject *__pyx_n_u_vis;
  PyObject *__pyx_kp_u_vis_gp;
  PyObject *__pyx_n_s_weakref;
  PyObject *__pyx_n_s_with_suffix;
  PyObject *__pyx_n_s_workonpartialdec;
  PyObject *__pyx_n_s_writeAllDecomps;
  PyObject *__pyx_int_0;
  PyObject *__pyx_int_1;
  PyObject *__pyx_int_24087813;
  PyObject *__pyx_int_37557029;
  PyObject *__pyx_int_76513566;
  PyObject *__pyx_int_104261058;
  PyObject *__pyx_int_108959872;
  PyObject *__pyx_int_128380825;
  PyObject *__pyx_int_141772857;
  PyObject *__pyx_int_160002037;
  PyObject *__pyx_int_193403919;
  PyObject *__pyx_int_222419149;
  PyObject *__pyx_int_228825662;
  PyObject *__pyx_int_229442799;
  PyObject *__pyx_int_238750788;
  PyObject *__pyx_int_248330301;
  PyObject *__pyx_int_260020090;
  gcg::USERGIVEN __pyx_k__5;
  PyObject *__pyx_k__10;
  PyObject *__pyx_k__11;
  PyObject *__pyx_tuple_;
  PyObject *__pyx_tuple__2;
  PyObject *__pyx_tuple__3;
  PyObject *__pyx_tuple__4;
  PyObject *__pyx_tuple__7;
  PyObject *__pyx_tuple__9;
  PyObject *__pyx_tuple__12;
  PyObject *__pyx_tuple__13;
  PyObject *__pyx_tuple__14;
  PyObject *__pyx_tuple__15;
  PyObject *__pyx_tuple__16;
  PyObject *__pyx_tuple__17;
  PyObject *__pyx_tuple__18;
  PyObject *__pyx_tuple__19;
  PyObject *__pyx_tuple__21;
  PyObject *__pyx_tuple__25;
  PyObject *__pyx_tuple__32;
  PyObject *__pyx_tuple__34;
  PyObject *__pyx_tuple__41;
  PyObject *__pyx_tuple__43;
  PyObject *__pyx_tuple__49;
  PyObject *__pyx_tuple__53;
  PyObject *__pyx_tuple__59;
  PyObject *__pyx_tuple__61;
  PyObject *__pyx_tuple__63;
  PyObject *__pyx_tuple__65;
  PyObject *__pyx_tuple__67;
  PyObject *__pyx_tuple__70;
  PyObject *__pyx_tuple__76;
  PyObject *__pyx_tuple__78;
  PyObject *__pyx_tuple__90;
  PyObject *__pyx_tuple__92;
  PyObject *__pyx_tuple__95;
  PyObject *__pyx_tuple__107;
  PyObject *__pyx_tuple__118;
  PyObject *__pyx_tuple__120;
  PyObject *__pyx_tuple__122;
  PyObject *__pyx_tuple__124;
  PyObject *__pyx_tuple__126;
  PyObject *__pyx_tuple__128;
  PyObject *__pyx_tuple__134;
  PyObject *__pyx_tuple__137;
  PyObject *__pyx_tuple__145;
  PyObject *__pyx_tuple__147;
  PyObject *__pyx_tuple__149;
  PyObject *__pyx_tuple__152;
  PyObject *__pyx_tuple__154;
  PyObject *__pyx_tuple__156;
  PyObject *__pyx_tuple__158;
  PyObject *__pyx_tuple__163;
  PyObject *__pyx_tuple__165;
  PyObject *__pyx_tuple__167;
  PyObject *__pyx_tuple__170;
  PyObject *__pyx_tuple__172;
  PyObject *__pyx_tuple__180;
  PyObject *__pyx_tuple__183;
  PyObject *__pyx_tuple__185;
  PyObject *__pyx_tuple__192;
  PyObject *__pyx_tuple__205;
  PyObject *__pyx_tuple__219;
  PyObject *__pyx_tuple__225;
  PyObject *__pyx_tuple__227;
  PyObject *__pyx_tuple__238;
  PyObject *__pyx_tuple__242;
  PyObject *__pyx_tuple__245;
  PyObject *__pyx_tuple__247;
  PyObject *__pyx_tuple__249;
  PyObject *__pyx_tuple__251;
  PyObject *__pyx_tuple__253;
  PyObject *__pyx_tuple__255;
  PyObject *__pyx_tuple__257;
  PyObject *__pyx_tuple__260;
  PyObject *__pyx_tuple__264;
  PyObject *__pyx_tuple__269;
  PyObject *__pyx_tuple__271;
  PyObject *__pyx_tuple__273;
  PyObject *__pyx_tuple__277;
  PyObject *__pyx_tuple__286;
  PyObject *__pyx_tuple__293;
  PyObject *__pyx_tuple__296;
  PyObject *__pyx_tuple__298;
  PyObject *__pyx_tuple__300;
  PyObject *__pyx_tuple__302;
  PyObject *__pyx_tuple__306;
  PyObject *__pyx_tuple__308;
  PyObject *__pyx_tuple__311;
  PyObject *__pyx_tuple__313;
  PyObject *__pyx_tuple__315;
  PyObject *__pyx_tuple__318;
  PyObject *__pyx_tuple__321;
  PyObject *__pyx_tuple__324;
  PyObject *__pyx_tuple__327;
  PyObject *__pyx_tuple__330;
  PyObject *__pyx_tuple__332;
  PyObject *__pyx_tuple__334;
  PyObject *__pyx_tuple__336;
  PyObject *__pyx_tuple__347;
  PyObject *__pyx_tuple__349;
  PyObject *__pyx_tuple__351;
  PyObject *__pyx_tuple__353;
  PyObject *__pyx_tuple__356;
  PyObject *__pyx_tuple__362;
  PyObject *__pyx_tuple__376;
  PyObject *__pyx_tuple__378;
  PyObject *__pyx_tuple__381;
  PyObject *__pyx_tuple__383;
  PyObject *__pyx_tuple__385;
  PyObject *__pyx_tuple__398;
  PyObject *__pyx_tuple__401;
  PyObject *__pyx_tuple__406;
  PyObject *__pyx_tuple__411;
  PyObject *__pyx_tuple__424;
  PyObject *__pyx_tuple__432;
  PyObject *__pyx_tuple__435;
  PyObject *__pyx_tuple__437;
  PyObject *__pyx_tuple__439;
  PyObject *__pyx_tuple__443;
  PyObject *__pyx_tuple__445;
  PyObject *__pyx_tuple__447;
  PyObject *__pyx_tuple__448;
  PyObject *__pyx_tuple__450;
  PyObject *__pyx_tuple__452;
  PyObject *__pyx_tuple__455;
  PyObject *__pyx_tuple__457;
  PyObject *__pyx_tuple__458;
  PyObject *__pyx_tuple__460;
  PyObject *__pyx_tuple__462;
  PyObject *__pyx_tuple__464;
  PyObject *__pyx_tuple__466;
  PyObject *__pyx_tuple__468;
  PyObject *__pyx_tuple__470;
  PyObject *__pyx_tuple__472;
  PyObject *__pyx_tuple__474;
  PyObject *__pyx_tuple__476;
  PyObject *__pyx_tuple__478;
  PyObject *__pyx_tuple__482;
  PyObject *__pyx_tuple__484;
  PyObject *__pyx_tuple__486;
  PyObject *__pyx_tuple__488;
  PyObject *__pyx_tuple__489;
  PyObject *__pyx_tuple__493;
  PyObject *__pyx_tuple__497;
  PyObject *__pyx_tuple__499;
  PyObject *__pyx_tuple__505;
  PyObject *__pyx_codeobj__22;
  PyObject *__pyx_codeobj__23;
  PyObject *__pyx_codeobj__24;
  PyObject *__pyx_codeobj__26;
  PyObject *__pyx_codeobj__27;
  PyObject *__pyx_codeobj__28;
  PyObject *__pyx_codeobj__29;
  PyObject *__pyx_codeobj__30;
  PyObject *__pyx_codeobj__31;
  PyObject *__pyx_codeobj__33;
  PyObject *__pyx_codeobj__35;
  PyObject *__pyx_codeobj__36;
  PyObject *__pyx_codeobj__37;
  PyObject *__pyx_codeobj__38;
  PyObject *__pyx_codeobj__39;
  PyObject *__pyx_codeobj__40;
  PyObject *__pyx_codeobj__42;
  PyObject *__pyx_codeobj__44;
  PyObject *__pyx_codeobj__45;
  PyObject *__pyx_codeobj__46;
  PyObject *__pyx_codeobj__47;
  PyObject *__pyx_codeobj__48;
  PyObject *__pyx_codeobj__50;
  PyObject *__pyx_codeobj__51;
  PyObject *__pyx_codeobj__52;
  PyObject *__pyx_codeobj__54;
  PyObject *__pyx_codeobj__55;
  PyObject *__pyx_codeobj__56;
  PyObject *__pyx_codeobj__57;
  PyObject *__pyx_codeobj__58;
  PyObject *__pyx_codeobj__60;
  PyObject *__pyx_codeobj__62;
  PyObject *__pyx_codeobj__64;
  PyObject *__pyx_codeobj__66;
  PyObject *__pyx_codeobj__68;
  PyObject *__pyx_codeobj__69;
  PyObject *__pyx_codeobj__71;
  PyObject *__pyx_codeobj__72;
  PyObject *__pyx_codeobj__73;
  PyObject *__pyx_codeobj__74;
  PyObject *__pyx_codeobj__75;
  PyObject *__pyx_codeobj__77;
  PyObject *__pyx_codeobj__79;
  PyObject *__pyx_codeobj__80;
  PyObject *__pyx_codeobj__81;
  PyObject *__pyx_codeobj__82;
  PyObject *__pyx_codeobj__83;
  PyObject *__pyx_codeobj__84;
  PyObject *__pyx_codeobj__85;
  PyObject *__pyx_codeobj__86;
  PyObject *__pyx_codeobj__87;
  PyObject *__pyx_codeobj__88;
  PyObject *__pyx_codeobj__89;
  PyObject *__pyx_codeobj__91;
  PyObject *__pyx_codeobj__93;
  PyObject *__pyx_codeobj__94;
  PyObject *__pyx_codeobj__96;
  PyObject *__pyx_codeobj__97;
  PyObject *__pyx_codeobj__98;
  PyObject *__pyx_codeobj__99;
  PyObject *__pyx_codeobj__100;
  PyObject *__pyx_codeobj__101;
  PyObject *__pyx_codeobj__102;
  PyObject *__pyx_codeobj__103;
  PyObject *__pyx_codeobj__104;
  PyObject *__pyx_codeobj__105;
  PyObject *__pyx_codeobj__106;
  PyObject *__pyx_codeobj__108;
  PyObject *__pyx_codeobj__109;
  PyObject *__pyx_codeobj__110;
  PyObject *__pyx_codeobj__111;
  PyObject *__pyx_codeobj__112;
  PyObject *__pyx_codeobj__113;
  PyObject *__pyx_codeobj__114;
  PyObject *__pyx_codeobj__115;
  PyObject *__pyx_codeobj__116;
  PyObject *__pyx_codeobj__117;
  PyObject *__pyx_codeobj__119;
  PyObject *__pyx_codeobj__121;
  PyObject *__pyx_codeobj__123;
  PyObject *__pyx_codeobj__125;
  PyObject *__pyx_codeobj__127;
  PyObject *__pyx_codeobj__129;
  PyObject *__pyx_codeobj__130;
  PyObject *__pyx_codeobj__131;
  PyObject *__pyx_codeobj__132;
  PyObject *__pyx_codeobj__133;
  PyObject *__pyx_codeobj__135;
  PyObject *__pyx_codeobj__136;
  PyObject *__pyx_codeobj__138;
  PyObject *__pyx_codeobj__139;
  PyObject *__pyx_codeobj__140;
  PyObject *__pyx_codeobj__141;
  PyObject *__pyx_codeobj__142;
  PyObject *__pyx_codeobj__143;
  PyObject *__pyx_codeobj__144;
  PyObject *__pyx_codeobj__146;
  PyObject *__pyx_codeobj__148;
  PyObject *__pyx_codeobj__150;
  PyObject *__pyx_codeobj__151;
  PyObject *__pyx_codeobj__153;
  PyObject *__pyx_codeobj__155;
  PyObject *__pyx_codeobj__157;
  PyObject *__pyx_codeobj__159;
  PyObject *__pyx_codeobj__160;
  PyObject *__pyx_codeobj__161;
  PyObject *__pyx_codeobj__162;
  PyObject *__pyx_codeobj__164;
  PyObject *__pyx_codeobj__166;
  PyObject *__pyx_codeobj__168;
  PyObject *__pyx_codeobj__169;
  PyObject *__pyx_codeobj__171;
  PyObject *__pyx_codeobj__173;
  PyObject *__pyx_codeobj__174;
  PyObject *__pyx_codeobj__175;
  PyObject *__pyx_codeobj__176;
  PyObject *__pyx_codeobj__177;
  PyObject *__pyx_codeobj__178;
  PyObject *__pyx_codeobj__179;
  PyObject *__pyx_codeobj__181;
  PyObject *__pyx_codeobj__182;
  PyObject *__pyx_codeobj__184;
  PyObject *__pyx_codeobj__186;
  PyObject *__pyx_codeobj__187;
  PyObject *__pyx_codeobj__188;
  PyObject *__pyx_codeobj__189;
  PyObject *__pyx_codeobj__190;
  PyObject *__pyx_codeobj__191;
  PyObject *__pyx_codeobj__193;
  PyObject *__pyx_codeobj__194;
  PyObject *__pyx_codeobj__195;
  PyObject *__pyx_codeobj__196;
  PyObject *__pyx_codeobj__197;
  PyObject *__pyx_codeobj__198;
  PyObject *__pyx_codeobj__199;
  PyObject *__pyx_codeobj__200;
  PyObject *__pyx_codeobj__201;
  PyObject *__pyx_codeobj__202;
  PyObject *__pyx_codeobj__203;
  PyObject *__pyx_codeobj__204;
  PyObject *__pyx_codeobj__206;
  PyObject *__pyx_codeobj__207;
  PyObject *__pyx_codeobj__208;
  PyObject *__pyx_codeobj__209;
  PyObject *__pyx_codeobj__210;
  PyObject *__pyx_codeobj__211;
  PyObject *__pyx_codeobj__212;
  PyObject *__pyx_codeobj__213;
  PyObject *__pyx_codeobj__214;
  PyObject *__pyx_codeobj__215;
  PyObject *__pyx_codeobj__216;
  PyObject *__pyx_codeobj__217;
  PyObject *__pyx_codeobj__218;
  PyObject *__pyx_codeobj__220;
  PyObject *__pyx_codeobj__221;
  PyObject *__pyx_codeobj__222;
  PyObject *__pyx_codeobj__223;
  PyObject *__pyx_codeobj__224;
  PyObject *__pyx_codeobj__226;
  PyObject *__pyx_codeobj__228;
  PyObject *__pyx_codeobj__229;
  PyObject *__pyx_codeobj__230;
  PyObject *__pyx_codeobj__231;
  PyObject *__pyx_codeobj__232;
  PyObject *__pyx_codeobj__233;
  PyObject *__pyx_codeobj__234;
  PyObject *__pyx_codeobj__235;
  PyObject *__pyx_codeobj__236;
  PyObject *__pyx_codeobj__237;
  PyObject *__pyx_codeobj__239;
  PyObject *__pyx_codeobj__240;
  PyObject *__pyx_codeobj__241;
  PyObject *__pyx_codeobj__243;
  PyObject *__pyx_codeobj__244;
  PyObject *__pyx_codeobj__246;
  PyObject *__pyx_codeobj__248;
  PyObject *__pyx_codeobj__250;
  PyObject *__pyx_codeobj__252;
  PyObject *__pyx_codeobj__254;
  PyObject *__pyx_codeobj__256;
  PyObject *__pyx_codeobj__258;
  PyObject *__pyx_codeobj__259;
  PyObject *__pyx_codeobj__261;
  PyObject *__pyx_codeobj__262;
  PyObject *__pyx_codeobj__263;
  PyObject *__pyx_codeobj__265;
  PyObject *__pyx_codeobj__266;
  PyObject *__pyx_codeobj__267;
  PyObject *__pyx_codeobj__268;
  PyObject *__pyx_codeobj__270;
  PyObject *__pyx_codeobj__272;
  PyObject *__pyx_codeobj__274;
  PyObject *__pyx_codeobj__275;
  PyObject *__pyx_codeobj__276;
  PyObject *__pyx_codeobj__278;
  PyObject *__pyx_codeobj__279;
  PyObject *__pyx_codeobj__280;
  PyObject *__pyx_codeobj__281;
  PyObject *__pyx_codeobj__282;
  PyObject *__pyx_codeobj__283;
  PyObject *__pyx_codeobj__284;
  PyObject *__pyx_codeobj__285;
  PyObject *__pyx_codeobj__287;
  PyObject *__pyx_codeobj__288;
  PyObject *__pyx_codeobj__289;
  PyObject *__pyx_codeobj__290;
  PyObject *__pyx_codeobj__291;
  PyObject *__pyx_codeobj__292;
  PyObject *__pyx_codeobj__294;
  PyObject *__pyx_codeobj__295;
  PyObject *__pyx_codeobj__297;
  PyObject *__pyx_codeobj__299;
  PyObject *__pyx_codeobj__301;
  PyObject *__pyx_codeobj__303;
  PyObject *__pyx_codeobj__304;
  PyObject *__pyx_codeobj__305;
  PyObject *__pyx_codeobj__307;
  PyObject *__pyx_codeobj__309;
  PyObject *__pyx_codeobj__310;
  PyObject *__pyx_codeobj__312;
  PyObject *__pyx_codeobj__314;
  PyObject *__pyx_codeobj__316;
  PyObject *__pyx_codeobj__317;
  PyObject *__pyx_codeobj__319;
  PyObject *__pyx_codeobj__320;
  PyObject *__pyx_codeobj__322;
  PyObject *__pyx_codeobj__323;
  PyObject *__pyx_codeobj__325;
  PyObject *__pyx_codeobj__326;
  PyObject *__pyx_codeobj__328;
  PyObject *__pyx_codeobj__329;
  PyObject *__pyx_codeobj__331;
  PyObject *__pyx_codeobj__333;
  PyObject *__pyx_codeobj__335;
  PyObject *__pyx_codeobj__337;
  PyObject *__pyx_codeobj__338;
  PyObject *__pyx_codeobj__339;
  PyObject *__pyx_codeobj__340;
  PyObject *__pyx_codeobj__341;
  PyObject *__pyx_codeobj__342;
  PyObject *__pyx_codeobj__343;
  PyObject *__pyx_codeobj__344;
  PyObject *__pyx_codeobj__345;
  PyObject *__pyx_codeobj__346;
  PyObject *__pyx_codeobj__348;
  PyObject *__pyx_codeobj__350;
  PyObject *__pyx_codeobj__352;
  PyObject *__pyx_codeobj__354;
  PyObject *__pyx_codeobj__355;
  PyObject *__pyx_codeobj__357;
  PyObject *__pyx_codeobj__358;
  PyObject *__pyx_codeobj__359;
  PyObject *__pyx_codeobj__360;
  PyObject *__pyx_codeobj__361;
  PyObject *__pyx_codeobj__363;
  PyObject *__pyx_codeobj__364;
  PyObject *__pyx_codeobj__365;
  PyObject *__pyx_codeobj__366;
  PyObject *__pyx_codeobj__367;
  PyObject *__pyx_codeobj__368;
  PyObject *__pyx_codeobj__369;
  PyObject *__pyx_codeobj__370;
  PyObject *__pyx_codeobj__371;
  PyObject *__pyx_codeobj__372;
  PyObject *__pyx_codeobj__373;
  PyObject *__pyx_codeobj__374;
  PyObject *__pyx_codeobj__375;
  PyObject *__pyx_codeobj__377;
  PyObject *__pyx_codeobj__379;
  PyObject *__pyx_codeobj__380;
  PyObject *__pyx_codeobj__382;
  PyObject *__pyx_codeobj__384;
  PyObject *__pyx_codeobj__386;
  PyObject *__pyx_codeobj__387;
  PyObject *__pyx_codeobj__388;
  PyObject *__pyx_codeobj__389;
  PyObject *__pyx_codeobj__390;
  PyObject *__pyx_codeobj__391;
  PyObject *__pyx_codeobj__392;
  PyObject *__pyx_codeobj__393;
  PyObject *__pyx_codeobj__394;
  PyObject *__pyx_codeobj__395;
  PyObject *__pyx_codeobj__396;
  PyObject *__pyx_codeobj__397;
  PyObject *__pyx_codeobj__399;
  PyObject *__pyx_codeobj__400;
  PyObject *__pyx_codeobj__402;
  PyObject *__pyx_codeobj__403;
  PyObject *__pyx_codeobj__404;
  PyObject *__pyx_codeobj__405;
  PyObject *__pyx_codeobj__407;
  PyObject *__pyx_codeobj__408;
  PyObject *__pyx_codeobj__409;
  PyObject *__pyx_codeobj__410;
  PyObject *__pyx_codeobj__412;
  PyObject *__pyx_codeobj__413;
  PyObject *__pyx_codeobj__414;
  PyObject *__pyx_codeobj__415;
  PyObject *__pyx_codeobj__416;
  PyObject *__pyx_codeobj__417;
  PyObject *__pyx_codeobj__418;
  PyObject *__pyx_codeobj__419;
  PyObject *__pyx_codeobj__420;
  PyObject *__pyx_codeobj__421;
  PyObject *__pyx_codeobj__422;
  PyObject *__pyx_codeobj__423;
  PyObject *__pyx_codeobj__425;
  PyObject *__pyx_codeobj__426;
  PyObject *__pyx_codeobj__427;
  PyObject *__pyx_codeobj__428;
  PyObject *__pyx_codeobj__429;
  PyObject *__pyx_codeobj__430;
  PyObject *__pyx_codeobj__431;
  PyObject *__pyx_codeobj__433;
  PyObject *__pyx_codeobj__434;
  PyObject *__pyx_codeobj__436;
  PyObject *__pyx_codeobj__438;
  PyObject *__pyx_codeobj__440;
  PyObject *__pyx_codeobj__441;
  PyObject *__pyx_codeobj__442;
  PyObject *__pyx_codeobj__444;
  PyObject *__pyx_codeobj__446;
  PyObject *__pyx_codeobj__449;
  PyObject *__pyx_codeobj__451;
  PyObject *__pyx_codeobj__453;
  PyObject *__pyx_codeobj__454;
  PyObject *__pyx_codeobj__456;
  PyObject *__pyx_codeobj__459;
  PyObject *__pyx_codeobj__461;
  PyObject *__pyx_codeobj__463;
  PyObject *__pyx_codeobj__465;
  PyObject *__pyx_codeobj__467;
  PyObject *__pyx_codeobj__469;
  PyObject *__pyx_codeobj__471;
  PyObject *__pyx_codeobj__473;
  PyObject *__pyx_codeobj__475;
  PyObject *__pyx_codeobj__477;
  PyObject *__pyx_codeobj__479;
  PyObject *__pyx_codeobj__480;
  PyObject *__pyx_codeobj__481;
  PyObject *__pyx_codeobj__483;
  PyObject *__pyx_codeobj__485;
  PyObject *__pyx_codeobj__487;
  PyObject *__pyx_codeobj__490;
  PyObject *__pyx_codeobj__491;
  PyObject *__pyx_codeobj__492;
  PyObject *__pyx_codeobj__494;
  PyObject *__pyx_codeobj__495;
  PyObject *__pyx_codeobj__496;
  PyObject *__pyx_codeobj__498;
  PyObject *__pyx_codeobj__500;
  PyObject *__pyx_codeobj__501;
  PyObject *__pyx_codeobj__502;
  PyObject *__pyx_codeobj__503;
  PyObject *__pyx_codeobj__504;
  PyObject *__pyx_codeobj__506;
  PyObject *__pyx_codeobj__507;
  PyObject *__pyx_codeobj__508;
  PyObject *__pyx_codeobj__509;
  PyObject *__pyx_codeobj__510;
  PyObject *__pyx_codeobj__511;
  PyObject *__pyx_codeobj__512;
  PyObject *__pyx_codeobj__513;
  PyObject *__pyx_codeobj__514;
} __pyx_mstate;

#if CYTHON_USE_MODULE_STATE
#ifdef __cplusplus
namespace {
  extern struct PyModuleDef __pyx_moduledef;
} /* anonymous namespace */
#else
static struct PyModuleDef __pyx_moduledef;
#endif

#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))

#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))

#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
#else
static __pyx_mstate __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_clear(PyObject *m) {
  __pyx_mstate *clear_module_state = __pyx_mstate(m);
  if (!clear_module_state) return 0;
  Py_CLEAR(clear_module_state->__pyx_d);
  Py_CLEAR(clear_module_state->__pyx_b);
  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
  #endif
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Expr);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Event);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Column);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Row);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_NLRow);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Solution);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_DomainChanges);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_BoundChange);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Node);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Variable);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Constraint);
  Py_CLEAR(clear_module_state->__pyx_ptype_9pyscipopt_4scip_Model);
  Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
  Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4bool_bool);
  Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_7complex_complex);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_DetProbData);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_DetProbData);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_ConsPart);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_ConsPart);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_VarPart);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_VarPart);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGColumn);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_GCGColumn);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_Detector);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_Detector);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PricingSolver);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PricingSolver);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_Score);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_Score);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PartialDecomposition);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_ConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_VarClassifier);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_VarClassifier);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_Model);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_Model);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_GCGPricingModel);
  Py_CLEAR(clear_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel);
  Py_CLEAR(clear_module_state->__pyx_type_8pygcgopt_3gcg_GCGMasterModel);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsClassifier___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsClassifier___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsClassifier_classify);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsClassifier_freeConsClassifie);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_addClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_assignConsToClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getAllSubsets);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getClassName);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getClassNameOfCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getClassOfCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getNClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getNConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getNConssOfClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_getName);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_isConsClassified);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_reduceClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_removeEmptyClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_setClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_setClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_ConsPart_setClassName);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Consclassifier_0_yields_a_classi);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addCandidatesNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addConsPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addPartialdecToAnces);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addPartialdecToFinis);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addPartialdecToFinis_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addPartialdecToOpen);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_addVarPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_candidatesNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_classificationtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_clearAncestorPartial);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_clearCurrentPartiald);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_clearFinishedPartial);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_conspartitioncollect);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_createConsPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_createConssAdjacency);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_createVarPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_freeTemporaryData);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getAncestorPartialde);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getConsPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getConsPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getConssForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getConssForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getFinishedPartialde);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getFinishedPartialde_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getIndexForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getIndexForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getModel);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNAncestorPartiald);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNConsPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNConssForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNConssForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNFinishedPartiald);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNNonzeros);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNOpenPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNVarPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getNVarsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getOpenPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getOrigVarsFixedZero);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getRelevantConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getRelevantVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getSortedCandidatesN);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getValsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getVarPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getVarPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_getVarsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isAssignedToOrigProb);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isConsCardinalityCon);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isConsSetpp);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isConsSetppc);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isConssAdjInitialize);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_isPartialdecDuplicat);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_nblockscandidatescal);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_partialdecIsNoDuplic);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_postprocessingtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_sortFinishedForScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_translatePartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_translatingtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_DetProbData_varpartitioncollecti);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Detector_callback_returned_of_ty);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_exitDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_finishPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_freeDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_initDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_postprocessPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_propagatePartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_setParamAggressive);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_setParamDefault);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detector_setParamFast);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Expected_iterable_as_first_argum);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Format);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGColumn);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGColumn___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGColumn___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGMasterModel);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGMasterModel___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGMasterModel___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGMasterModel_addCol);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGMasterModel_getOrigvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGPricingModel);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGPricingModel___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGPricingModel___setstate_cytho);
  Py_CLEAR(clear_module_state->__pyx_n_s_GCGPricingModel_createGcgCol);
  Py_CLEAR(clear_module_state->__pyx_n_s_INFEASIBLE);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iterable);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Length_of_value_for_decchar_must);
  Py_CLEAR(clear_module_state->__pyx_n_s_List);
  Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_addDecomposition);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_addDecompositionFromConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_addPreexistingPartialDecom);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_addVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_createDecomposition);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_detect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getDetprobdataOrig);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getDetprobdataPresolved);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getDualbound);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getMasterProb);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getMastervars);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getNConsClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getNVarClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_getPartDecompFromID);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includeConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includeDefaultPlugins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includeDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includePricingSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includeScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_includeVarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listConsClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listDecompositions);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listDetectors);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listPricingSolvers);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listScores);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_listVarClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_optimize);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_presolve);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_printStatistics);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_printVersion);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setDetectorEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setDetectorFinishingEnable);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setDetectorPostprocessingE);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setGCGSeparating);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setPricingSolverEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setPricingSolverExactEnabl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setPricingSolverHeuristicE);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_setVarClassifierEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Model_writeAllDecomps);
  Py_CLEAR(clear_module_state->__pyx_n_s_NOTAPPLICABLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_OPTIMAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_ALL);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_BOTH);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_COMPLETE);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_COMPLETED_CONSTOMASTER);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_CONS_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS___setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_LINKING);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_MASTER);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_NOT);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_ONLY_MASTER);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_ONLY_PRICING);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_PARTIAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_SCIP_CALL);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_USERGIVEN);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_USERGIVEN___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_USERGIVEN___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_VAR_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho);
  Py_CLEAR(clear_module_state->__pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition___copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition___reduce_cy);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition___setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition__repr_png);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition__repr_svg);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addAncestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addClockTim);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addDecChang);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addNNewBloc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctConss_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctConss_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctVarsF);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctVarsT);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_addPctVarsT_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_aggInfoCalc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_alreadyAssi);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_assignCurre);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_assignOpenC);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_assignSmall);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_buildDecCha);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_calcAggrega);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_calcStairli);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_checkAllCon);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_checkConsis);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_completeByC);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_completeByC_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_completeGre);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_considerImp);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_copyPartiti);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_deleteEmpty);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_deleteOpenc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_deleteOpenv);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_displayInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_findVarsLin);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_findVarsLin_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConsToBl);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConsToBl_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConsToMa);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConssToB);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConssToB_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixConssToM);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixVarToLin);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixVarToMas);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_fixVarToSta);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getAncestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getAncestor_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getBlocksFo);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getConssFor);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getConssFor_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getDetector_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getDetector_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getDetprobd);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getFinished);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getHashValu);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getID);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getLinkingv);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getMasterco);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getMasterva);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNAncesto);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNCoeffsF);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNCoeffsF_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNConssFo);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNDetecto);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNLinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNMasterc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNMasterv);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNNewBloc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNNewBloc_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNOpencon);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNOpenvar);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNReps);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNStairli);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNTotalSt);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNVarsFor);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getNVarsFor_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getOpencons);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getOpenvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss_4);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss_5);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctConss_6);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsF);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsF_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_4);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getRepForBl);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getRepVarma);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getTranslat);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getUsergive);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getVarProbi);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_getVarsForB);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_hasSetppMas);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_hasSetppcMa);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_hasSetppcca);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isAssignedT);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isComplete);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isConsMaste);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isConsOpenc);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isTrivial);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarBlockv);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarLinkin);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarOpenva);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarStairl);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_isVarStairl_2);
  Py_CLEAR(clear_module_state->__pyx_kp_u_PartialDecomposition_nBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_prepare);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_refineToBlo);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_refineToMas);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_removeAnces);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_removeMaste);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setAncestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setConsPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setConsToMa);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setDetector_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setDetector_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setDetector_4);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setFinished);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setFinished_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctConss_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctConss_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctVarsF);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctVarsT);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setPctVarsT_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setStemsFro);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setTranslat);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setUsergive);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setVarParti);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setVarToBlo);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setVarToLin);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setVarToMas);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_setVarToSta);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_shouldCompl);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_showVisuali);
  Py_CLEAR(clear_module_state->__pyx_n_s_PartialDecomposition_sort);
  Py_CLEAR(clear_module_state->__pyx_n_s_Path);
  Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_exitSolution);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_exitSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_freeSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_initSolution);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_initSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_solve);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_solveHeuristic);
  Py_CLEAR(clear_module_state->__pyx_n_s_PricingSolver_updateSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_SOLVERLIMIT);
  Py_CLEAR(clear_module_state->__pyx_n_s_Score);
  Py_CLEAR(clear_module_state->__pyx_n_s_Score___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Score___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Score_scorecalculate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Score_scorefree);
  Py_CLEAR(clear_module_state->__pyx_n_s_TemporaryDirectory);
  Py_CLEAR(clear_module_state->__pyx_kp_u_The_value_of_the_key_newpartiald);
  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNBOUNDED);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNKNOWN);
  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarClassifier___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarClassifier___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarClassifier_classify);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarClassifier_freeVarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_addClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_assignVarToClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getAllSubsets);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getClassName);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getClassNameOfVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getClassOfVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getNClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getNVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getNVarsOfClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_getName);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_isVarClassified);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_reduceClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_removeEmptyClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_setClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_setClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_VarPart_setClassName);
  Py_CLEAR(clear_module_state->__pyx_kp_u_Varclassifier_0_yields_a_classif);
  Py_CLEAR(clear_module_state->__pyx_n_s_Warning);
  Py_CLEAR(clear_module_state->__pyx_n_s__20);
  Py_CLEAR(clear_module_state->__pyx_n_s__515);
  Py_CLEAR(clear_module_state->__pyx_kp_u__6);
  Py_CLEAR(clear_module_state->__pyx_kp_u__8);
  Py_CLEAR(clear_module_state->__pyx_n_s_addAncestorID);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_addCandidatesNBlocksNVotes);
  Py_CLEAR(clear_module_state->__pyx_n_s_addClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_addClockTime);
  Py_CLEAR(clear_module_state->__pyx_n_s_addCol);
  Py_CLEAR(clear_module_state->__pyx_n_s_addConsPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_addDecChangesFromAncestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_addDecomposition);
  Py_CLEAR(clear_module_state->__pyx_n_s_addDecompositionFromConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_addDetectorChainInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_addNNewBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPartialdecToAncestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPartialdecToFinished);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPartialdecToFinishedUnchecked);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPartialdecToOpen);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctConssFromFree);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctConssToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctConssToBorder);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctVarsFromFree);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctVarsToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPctVarsToBorder);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPreexistingPartialDecompositi);
  Py_CLEAR(clear_module_state->__pyx_n_s_addVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_addVarPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_aggInfoCalculated);
  Py_CLEAR(clear_module_state->__pyx_n_s_all);
  Py_CLEAR(clear_module_state->__pyx_kp_u_alldecompositions);
  Py_CLEAR(clear_module_state->__pyx_n_s_alreadyAssignedConssToBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_ancestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_ancestor_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_args);
  Py_CLEAR(clear_module_state->__pyx_n_s_assignConsToClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_assignCurrentStairlinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_assignOpenConssToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_assignSmallestComponentsButOneCo);
  Py_CLEAR(clear_module_state->__pyx_n_s_assignVarToClass);
  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
  Py_CLEAR(clear_module_state->__pyx_n_s_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_block1_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_block2_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_block_conss);
  Py_CLEAR(clear_module_state->__pyx_n_s_block_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_blockrepid);
  Py_CLEAR(clear_module_state->__pyx_kp_u_border_area);
  Py_CLEAR(clear_module_state->__pyx_n_s_both);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_buildDecChainString);
  Py_CLEAR(clear_module_state->__pyx_n_s_c);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_consclassifiername);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_decchar);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_decinfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_desc);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_detectorname);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_directory);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_extension);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_scorename);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_shortname);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_solvername);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_varclassifiername);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_vars);
  Py_CLEAR(clear_module_state->__pyx_n_s_calcAggregationInformation);
  Py_CLEAR(clear_module_state->__pyx_n_s_calcStairlinkingVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_candidate);
  Py_CLEAR(clear_module_state->__pyx_n_s_candidates);
  Py_CLEAR(clear_module_state->__pyx_n_s_candidatesNBlocks);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_Column_with_GCG_CO);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_ConsPart_with_Cons);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_DetProbData_with_D);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_Model_with_SCIP_NU);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_PartialDecompositi);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_create_VarPart_with_VarPa);
  Py_CLEAR(clear_module_state->__pyx_n_s_checkAllConssAssigned);
  Py_CLEAR(clear_module_state->__pyx_n_s_checkConsistency);
  Py_CLEAR(clear_module_state->__pyx_n_s_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
  Py_CLEAR(clear_module_state->__pyx_n_u_classic);
  Py_CLEAR(clear_module_state->__pyx_n_s_classificationtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_classify);
  Py_CLEAR(clear_module_state->__pyx_n_s_classindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_clearAncestorPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_clearCurrentPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_clearFinishedPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
  Py_CLEAR(clear_module_state->__pyx_n_s_clocktime);
  Py_CLEAR(clear_module_state->__pyx_n_s_col);
  Py_CLEAR(clear_module_state->__pyx_n_s_collections_abc);
  Py_CLEAR(clear_module_state->__pyx_n_s_complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_completeByConnected);
  Py_CLEAR(clear_module_state->__pyx_n_s_completeByConnectedConssAdjacenc);
  Py_CLEAR(clear_module_state->__pyx_n_s_completeGreedily);
  Py_CLEAR(clear_module_state->__pyx_n_s_comppartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_cons);
  Py_CLEAR(clear_module_state->__pyx_n_s_consIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_consclassesmaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_consclassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_consclassifiername);
  Py_CLEAR(clear_module_state->__pyx_n_s_consclassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_considerImplicits);
  Py_CLEAR(clear_module_state->__pyx_n_s_conspartitioncollection);
  Py_CLEAR(clear_module_state->__pyx_n_s_conspartitioncollection_element);
  Py_CLEAR(clear_module_state->__pyx_n_s_conspartitioncollection_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_conspatitionptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_conss);
  Py_CLEAR(clear_module_state->__pyx_n_s_consschanged);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_copyPartitionStatistics);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_ancestor);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_ancestor_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_block1_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_block2_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_block_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_blockrepid);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_candidates);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_candidatesNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_classificationtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_clocktime);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_comppartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_consclassesmaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_consindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_conspartitioncollection);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_dec_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_detailLevel);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_detectorchain_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_detectorchainindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_finished);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_firstblock_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_fromorig);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_ignoreDetectionLimits);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_nblocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_nblockscandidatescalctime);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_newlist);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_newvector);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_nnewblocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_otherdata);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_otherpartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_otherpartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_partialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_partialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_partition);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_pct);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_postprocessingtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_rep_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_repid);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_translatingtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_varclasseslinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_varclassesmaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_variables);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_varid);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_varindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_cpp_varpartitioncollection);
  Py_CLEAR(clear_module_state->__pyx_n_s_createConsPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_createConssAdjacency);
  Py_CLEAR(clear_module_state->__pyx_n_s_createDecomposition);
  Py_CLEAR(clear_module_state->__pyx_n_s_createDirectory);
  Py_CLEAR(clear_module_state->__pyx_n_s_createGcgCol);
  Py_CLEAR(clear_module_state->__pyx_n_s_createVarPart);
  Py_CLEAR(clear_module_state->__pyx_n_s_createscip);
  Py_CLEAR(clear_module_state->__pyx_n_s_dec);
  Py_CLEAR(clear_module_state->__pyx_n_u_dec);
  Py_CLEAR(clear_module_state->__pyx_n_s_dec_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_decchar);
  Py_CLEAR(clear_module_state->__pyx_n_s_decids);
  Py_CLEAR(clear_module_state->__pyx_n_s_decinfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_decomp);
  Py_CLEAR(clear_module_state->__pyx_n_s_decompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_decomps);
  Py_CLEAR(clear_module_state->__pyx_n_s_deleteEmptyBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_deleteOpencons);
  Py_CLEAR(clear_module_state->__pyx_n_s_deleteOpenvar);
  Py_CLEAR(clear_module_state->__pyx_n_s_desc);
  Py_CLEAR(clear_module_state->__pyx_n_s_det_prob_data);
  Py_CLEAR(clear_module_state->__pyx_n_s_detailLevel);
  Py_CLEAR(clear_module_state->__pyx_n_s_detect);
  Py_CLEAR(clear_module_state->__pyx_kp_u_detection_classification_varclas);
  Py_CLEAR(clear_module_state->__pyx_kp_u_detection_detectors_enabled);
  Py_CLEAR(clear_module_state->__pyx_kp_u_detection_detectors_finishingena);
  Py_CLEAR(clear_module_state->__pyx_kp_u_detection_detectors_postprocessi);
  Py_CLEAR(clear_module_state->__pyx_n_s_detector);
  Py_CLEAR(clear_module_state->__pyx_n_s_detector_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_detectorchain_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_detectorchainindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_detectorname);
  Py_CLEAR(clear_module_state->__pyx_n_s_detectors);
  Py_CLEAR(clear_module_state->__pyx_n_s_detprobdata);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_directory);
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
  Py_CLEAR(clear_module_state->__pyx_n_s_displayInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_dualsolconv);
  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
  Py_CLEAR(clear_module_state->__pyx_n_s_enabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_enabledfinishing);
  Py_CLEAR(clear_module_state->__pyx_n_s_enabledpostprocessing);
  Py_CLEAR(clear_module_state->__pyx_n_s_enter);
  Py_CLEAR(clear_module_state->__pyx_n_s_enumerate);
  Py_CLEAR(clear_module_state->__pyx_n_s_exactEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_exist_ok);
  Py_CLEAR(clear_module_state->__pyx_n_s_exit);
  Py_CLEAR(clear_module_state->__pyx_n_s_exitDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_exitSolution);
  Py_CLEAR(clear_module_state->__pyx_n_s_exitSolver);
  Py_CLEAR(clear_module_state->__pyx_kp_u_experimental_benders_score);
  Py_CLEAR(clear_module_state->__pyx_n_s_extension);
  Py_CLEAR(clear_module_state->__pyx_n_s_findVarsLinkingToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_findVarsLinkingToStairlinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_finishPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_finished);
  Py_CLEAR(clear_module_state->__pyx_n_s_firstblock_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConsToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConsToBlockId);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConsToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConssToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConssToBlockId);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixConssToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixVarToLinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixVarToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_fixVarToStairlinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_format);
  Py_CLEAR(clear_module_state->__pyx_n_s_freeConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_freeDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_freeSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_freeTemporaryData);
  Py_CLEAR(clear_module_state->__pyx_n_s_freeVarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_freqcallround);
  Py_CLEAR(clear_module_state->__pyx_n_s_freqcallroundoriginal);
  Py_CLEAR(clear_module_state->__pyx_n_s_fromorig);
  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
  Py_CLEAR(clear_module_state->__pyx_n_s_gcg_col);
  Py_CLEAR(clear_module_state->__pyx_n_s_get);
  Py_CLEAR(clear_module_state->__pyx_n_s_getAllSubsets);
  Py_CLEAR(clear_module_state->__pyx_n_s_getAncestorID);
  Py_CLEAR(clear_module_state->__pyx_n_s_getAncestorList);
  Py_CLEAR(clear_module_state->__pyx_n_s_getAncestorPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_getBlocksForRep);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassName);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassNameOfCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassNameOfVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassOfCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getClassOfVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConsPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConsPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConssForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConssForBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConssForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getConssForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetectorClockTime);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetectorClockTimes);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetectorchainInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetprobdata);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetprobdataOrig);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDetprobdataPresolved);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDualbound);
  Py_CLEAR(clear_module_state->__pyx_n_s_getFinishedByFinisher);
  Py_CLEAR(clear_module_state->__pyx_n_s_getFinishedPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_getFinishedPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getHashValue);
  Py_CLEAR(clear_module_state->__pyx_n_s_getID);
  Py_CLEAR(clear_module_state->__pyx_n_s_getIndexForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getIndexForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getLinkingvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getMasterProb);
  Py_CLEAR(clear_module_state->__pyx_n_s_getMasterconss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getMastervars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getModel);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNAncestorPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNAncestors);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNCoeffsForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNCoeffsForMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConsClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConsPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConssForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConssForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConssForVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNConssOfClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNDetectors);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNFinishedPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNLinkingvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNMasterconss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNMastervars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNNewBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNNewBlocksVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNNonzeros);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNOpenPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNOpenconss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNOpenvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNReps);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNStairlinkingvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNTotalStairlinkingvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarsForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarsForBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getNVarsOfClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_getName);
  Py_CLEAR(clear_module_state->__pyx_n_s_getOpenPartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_getOpenconss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getOpenvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getOrigVarsFixedZero);
  Py_CLEAR(clear_module_state->__pyx_n_s_getOrigvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPartDecompFromID);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssFromFree);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssFromFreeVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssToBlockVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssToBorder);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctConssToBorderVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsFromFree);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsFromFreeVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsToBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsToBlockVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsToBorder);
  Py_CLEAR(clear_module_state->__pyx_n_s_getPctVarsToBorderVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_getRelevantConss);
  Py_CLEAR(clear_module_state->__pyx_n_s_getRelevantVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_getRepForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getRepVarmap);
  Py_CLEAR(clear_module_state->__pyx_n_s_getScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_getSortedCandidatesNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_getStage);
  Py_CLEAR(clear_module_state->__pyx_n_s_getTranslatedpartialdecid);
  Py_CLEAR(clear_module_state->__pyx_n_s_getUsergiven);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_getValsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVarPartition);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVarPartitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVarProbindexForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVarsForBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_getVarsForCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasSetppMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasSetppcMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasSetppccardMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_heuristicEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_idx);
  Py_CLEAR(clear_module_state->__pyx_n_s_ignoreDetectionLimits);
  Py_CLEAR(clear_module_state->__pyx_n_s_import);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeDefaultPlugins);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_includePricingSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeVarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_initDetector);
  Py_CLEAR(clear_module_state->__pyx_n_s_initSolution);
  Py_CLEAR(clear_module_state->__pyx_n_s_initSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
  Py_CLEAR(clear_module_state->__pyx_n_s_isAssignedToOrigProb);
  Py_CLEAR(clear_module_state->__pyx_n_s_isComplete);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsCardinalityCons);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsClassified);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsMastercons);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsOpencons);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsSetpp);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConsSetppc);
  Py_CLEAR(clear_module_state->__pyx_n_s_isConssAdjInitialized);
  Py_CLEAR(clear_module_state->__pyx_n_s_isPartialdecDuplicateofFinished);
  Py_CLEAR(clear_module_state->__pyx_n_s_isTrivial);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarBlockvarOfBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarClassified);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarLinkingvar);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarMastervar);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarOpenvar);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarStairlinkingvar);
  Py_CLEAR(clear_module_state->__pyx_n_s_isVarStairlinkingvarOfBlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_enabled);
  Py_CLEAR(clear_module_state->__pyx_kp_u_is_not_supported_Only_svg_and_p);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_presolved);
  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_isray);
  Py_CLEAR(clear_module_state->__pyx_n_s_joinpath);
  Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
  Py_CLEAR(clear_module_state->__pyx_n_s_linking);
  Py_CLEAR(clear_module_state->__pyx_n_s_listConsClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_listDecompositions);
  Py_CLEAR(clear_module_state->__pyx_n_s_listDetectors);
  Py_CLEAR(clear_module_state->__pyx_n_s_listPricingSolvers);
  Py_CLEAR(clear_module_state->__pyx_n_s_listScores);
  Py_CLEAR(clear_module_state->__pyx_n_s_listVarClassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_lower);
  Py_CLEAR(clear_module_state->__pyx_n_u_lowerbound);
  Py_CLEAR(clear_module_state->__pyx_n_s_main);
  Py_CLEAR(clear_module_state->__pyx_n_s_master);
  Py_CLEAR(clear_module_state->__pyx_n_s_master_conss);
  Py_CLEAR(clear_module_state->__pyx_n_s_master_prob);
  Py_CLEAR(clear_module_state->__pyx_n_s_mastervars);
  Py_CLEAR(clear_module_state->__pyx_kp_u_maxForWhiteScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxForWhiteScore_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxNumberOfClasses);
  Py_CLEAR(clear_module_state->__pyx_kp_u_max_foreseeing_white);
  Py_CLEAR(clear_module_state->__pyx_kp_u_max_foreseeing_white_with_aggreg);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxcallround);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxcallroundoriginal);
  Py_CLEAR(clear_module_state->__pyx_n_s_mincallround);
  Py_CLEAR(clear_module_state->__pyx_n_s_mincallroundoriginal);
  Py_CLEAR(clear_module_state->__pyx_n_s_mkdir);
  Py_CLEAR(clear_module_state->__pyx_n_s_mp);
  Py_CLEAR(clear_module_state->__pyx_kp_u_nLinkingVars);
  Py_CLEAR(clear_module_state->__pyx_kp_u_nMasterConss);
  Py_CLEAR(clear_module_state->__pyx_kp_u_nMasterVars);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_consclassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_detectors);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_pricing_solvers);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_scores);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_varclassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_n_vars);
  Py_CLEAR(clear_module_state->__pyx_n_s_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_name_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_nblocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_nblockscandidatescalctime);
  Py_CLEAR(clear_module_state->__pyx_n_s_nclasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_ncons);
  Py_CLEAR(clear_module_state->__pyx_n_s_nconsparts);
  Py_CLEAR(clear_module_state->__pyx_n_s_new);
  Py_CLEAR(clear_module_state->__pyx_n_s_newlist);
  Py_CLEAR(clear_module_state->__pyx_n_u_newpartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_newvector);
  Py_CLEAR(clear_module_state->__pyx_n_s_nnewblocks);
  Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
  Py_CLEAR(clear_module_state->__pyx_n_s_npartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_nvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_nvotes);
  Py_CLEAR(clear_module_state->__pyx_n_s_only_master);
  Py_CLEAR(clear_module_state->__pyx_n_s_only_pricing);
  Py_CLEAR(clear_module_state->__pyx_n_s_optimize);
  Py_CLEAR(clear_module_state->__pyx_n_s_original);
  Py_CLEAR(clear_module_state->__pyx_n_s_originalvars);
  Py_CLEAR(clear_module_state->__pyx_n_s_otherdata);
  Py_CLEAR(clear_module_state->__pyx_n_s_otherpartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_otherpartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_otherpartialdecs_element);
  Py_CLEAR(clear_module_state->__pyx_n_s_otherpartialdecs_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_parents);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdecIsNoDuplicateOfPartial);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdecindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdecs_element);
  Py_CLEAR(clear_module_state->__pyx_n_s_partialdecs_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_partition);
  Py_CLEAR(clear_module_state->__pyx_n_s_partitionIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_pathlib);
  Py_CLEAR(clear_module_state->__pyx_n_s_pct);
  Py_CLEAR(clear_module_state->__pyx_n_s_pd);
  Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
  Py_CLEAR(clear_module_state->__pyx_n_u_png);
  Py_CLEAR(clear_module_state->__pyx_n_s_postprocessPartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_postprocessingtime);
  Py_CLEAR(clear_module_state->__pyx_kp_u_ppc_max_white);
  Py_CLEAR(clear_module_state->__pyx_kp_u_ppc_max_white_with_aggregation_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_prepare);
  Py_CLEAR(clear_module_state->__pyx_n_s_presolve);
  Py_CLEAR(clear_module_state->__pyx_n_s_presolved);
  Py_CLEAR(clear_module_state->__pyx_n_s_pricingSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_pricing_solver_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_pricing_solvers);
  Py_CLEAR(clear_module_state->__pyx_n_s_pricingprob);
  Py_CLEAR(clear_module_state->__pyx_kp_u_pricingsolver_exactenabled);
  Py_CLEAR(clear_module_state->__pyx_kp_u_pricingsolver_heurenabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_print);
  Py_CLEAR(clear_module_state->__pyx_n_s_printStatistics);
  Py_CLEAR(clear_module_state->__pyx_n_s_printVersion);
  Py_CLEAR(clear_module_state->__pyx_n_s_priority);
  Py_CLEAR(clear_module_state->__pyx_n_s_probnr);
  Py_CLEAR(clear_module_state->__pyx_n_s_propagatePartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_proxy);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyGCGCol);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyVar);
  Py_CLEAR(clear_module_state->__pyx_n_s_pygcgopt_gcg);
  Py_CLEAR(clear_module_state->__pyx_n_s_pygcgopt_util);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyscipopt_scip);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_checksum);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_result);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ConsClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_Detector);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PY_USERGIVEN);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_PricingSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_Score);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_VarClassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
  Py_CLEAR(clear_module_state->__pyx_n_s_r);
  Py_CLEAR(clear_module_state->__pyx_n_s_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_read_bytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_read_text);
  Py_CLEAR(clear_module_state->__pyx_n_s_redcost);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduceClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
  Py_CLEAR(clear_module_state->__pyx_n_s_refineToBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_refineToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_removeAncestorID);
  Py_CLEAR(clear_module_state->__pyx_n_s_removeEmptyClasses);
  Py_CLEAR(clear_module_state->__pyx_n_s_removeMastercons);
  Py_CLEAR(clear_module_state->__pyx_n_s_rep_id);
  Py_CLEAR(clear_module_state->__pyx_n_s_repid);
  Py_CLEAR(clear_module_state->__pyx_n_s_repr_png);
  Py_CLEAR(clear_module_state->__pyx_n_s_repr_svg);
  Py_CLEAR(clear_module_state->__pyx_n_s_result);
  Py_CLEAR(clear_module_state->__pyx_n_u_result);
  Py_CLEAR(clear_module_state->__pyx_n_s_row);
  Py_CLEAR(clear_module_state->__pyx_n_s_scip);
  Py_CLEAR(clear_module_state->__pyx_n_s_score);
  Py_CLEAR(clear_module_state->__pyx_n_s_scorecalculate);
  Py_CLEAR(clear_module_state->__pyx_n_s_scorefree);
  Py_CLEAR(clear_module_state->__pyx_n_s_scorename);
  Py_CLEAR(clear_module_state->__pyx_n_s_scores);
  Py_CLEAR(clear_module_state->__pyx_n_u_scorevalue);
  Py_CLEAR(clear_module_state->__pyx_n_s_self);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self__scip_self__valid_cannot_be);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self_consPartition_cannot_be_con);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self_gcg_col_cannot_be_converted);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self_thisptr_cannot_be_converted);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self_varPartition_cannot_be_conv);
  Py_CLEAR(clear_module_state->__pyx_n_s_setAncestorList);
  Py_CLEAR(clear_module_state->__pyx_n_s_setBoolParam);
  Py_CLEAR(clear_module_state->__pyx_n_s_setClassDecompInfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_setClassDescription);
  Py_CLEAR(clear_module_state->__pyx_n_s_setClassName);
  Py_CLEAR(clear_module_state->__pyx_n_s_setConsPartitionStatistics);
  Py_CLEAR(clear_module_state->__pyx_n_s_setConsToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorClockTimes);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorFinished);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorFinishedOrig);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorFinishingEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorPostprocessingEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setDetectorPropagated);
  Py_CLEAR(clear_module_state->__pyx_n_s_setFinishedByFinisher);
  Py_CLEAR(clear_module_state->__pyx_n_s_setFinishedByFinisherOrig);
  Py_CLEAR(clear_module_state->__pyx_n_s_setGCGSeparating);
  Py_CLEAR(clear_module_state->__pyx_n_s_setNBlocks);
  Py_CLEAR(clear_module_state->__pyx_n_s_setParamAggressive);
  Py_CLEAR(clear_module_state->__pyx_n_s_setParamDefault);
  Py_CLEAR(clear_module_state->__pyx_n_s_setParamFast);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctConssFromFreeVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctConssToBlockVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctConssToBorderVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctVarsFromFreeVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctVarsToBlockVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPctVarsToBorderVector);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPricingSolverEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPricingSolverExactEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPricingSolverHeuristicEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setStemsFromOrig);
  Py_CLEAR(clear_module_state->__pyx_n_s_setTranslatedpartialdecid);
  Py_CLEAR(clear_module_state->__pyx_n_s_setUsergiven);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarClassifierEnabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarPartitionStatistics);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarToBlockId);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarToLinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVarToStairlinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_setting);
  Py_CLEAR(clear_module_state->__pyx_n_s_shortname);
  Py_CLEAR(clear_module_state->__pyx_n_s_shouldCompletedByConsToMaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_showVisualization);
  Py_CLEAR(clear_module_state->__pyx_n_s_skip);
  Py_CLEAR(clear_module_state->__pyx_n_s_solve);
  Py_CLEAR(clear_module_state->__pyx_n_s_solveHeuristic);
  Py_CLEAR(clear_module_state->__pyx_n_s_solvername);
  Py_CLEAR(clear_module_state->__pyx_n_s_sort);
  Py_CLEAR(clear_module_state->__pyx_n_s_sortFinishedForScore);
  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_consclassifier_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_decomposition_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_detector_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_detprobdata_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_gcg_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_partition_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_pricing_solver_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_score_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_pygcgopt_varclassifier_pxi);
  Py_CLEAR(clear_module_state->__pyx_n_s_state);
  Py_CLEAR(clear_module_state->__pyx_n_u_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_str_conversion);
  Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
  Py_CLEAR(clear_module_state->__pyx_kp_u_strong_decomposition_score);
  Py_CLEAR(clear_module_state->__pyx_n_s_super);
  Py_CLEAR(clear_module_state->__pyx_n_u_svg);
  Py_CLEAR(clear_module_state->__pyx_n_s_tempfile);
  Py_CLEAR(clear_module_state->__pyx_n_s_test);
  Py_CLEAR(clear_module_state->__pyx_n_s_translatePartialdecs);
  Py_CLEAR(clear_module_state->__pyx_n_s_translatingtime);
  Py_CLEAR(clear_module_state->__pyx_n_s_typing);
  Py_CLEAR(clear_module_state->__pyx_n_s_update);
  Py_CLEAR(clear_module_state->__pyx_n_s_updateSolver);
  Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_usefulrecall);
  Py_CLEAR(clear_module_state->__pyx_n_s_v);
  Py_CLEAR(clear_module_state->__pyx_n_s_vals);
  Py_CLEAR(clear_module_state->__pyx_n_s_value);
  Py_CLEAR(clear_module_state->__pyx_n_s_var);
  Py_CLEAR(clear_module_state->__pyx_n_s_varIndex);
  Py_CLEAR(clear_module_state->__pyx_n_s_varbndschanged);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclasseslinking);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclassesmaster);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclassifier);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclassifier_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclassifiername);
  Py_CLEAR(clear_module_state->__pyx_n_s_varclassifiers);
  Py_CLEAR(clear_module_state->__pyx_n_s_variables);
  Py_CLEAR(clear_module_state->__pyx_n_s_varid);
  Py_CLEAR(clear_module_state->__pyx_n_s_varobjschanged);
  Py_CLEAR(clear_module_state->__pyx_n_s_varpartitioncollection);
  Py_CLEAR(clear_module_state->__pyx_n_s_varpartitioncollection_element);
  Py_CLEAR(clear_module_state->__pyx_n_s_varpartitioncollection_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_varpatitionptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_vars);
  Py_CLEAR(clear_module_state->__pyx_n_u_vis);
  Py_CLEAR(clear_module_state->__pyx_kp_u_vis_gp);
  Py_CLEAR(clear_module_state->__pyx_n_s_weakref);
  Py_CLEAR(clear_module_state->__pyx_n_s_with_suffix);
  Py_CLEAR(clear_module_state->__pyx_n_s_workonpartialdec);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeAllDecomps);
  Py_CLEAR(clear_module_state->__pyx_int_0);
  Py_CLEAR(clear_module_state->__pyx_int_1);
  Py_CLEAR(clear_module_state->__pyx_int_24087813);
  Py_CLEAR(clear_module_state->__pyx_int_37557029);
  Py_CLEAR(clear_module_state->__pyx_int_76513566);
  Py_CLEAR(clear_module_state->__pyx_int_104261058);
  Py_CLEAR(clear_module_state->__pyx_int_108959872);
  Py_CLEAR(clear_module_state->__pyx_int_128380825);
  Py_CLEAR(clear_module_state->__pyx_int_141772857);
  Py_CLEAR(clear_module_state->__pyx_int_160002037);
  Py_CLEAR(clear_module_state->__pyx_int_193403919);
  Py_CLEAR(clear_module_state->__pyx_int_222419149);
  Py_CLEAR(clear_module_state->__pyx_int_228825662);
  Py_CLEAR(clear_module_state->__pyx_int_229442799);
  Py_CLEAR(clear_module_state->__pyx_int_238750788);
  Py_CLEAR(clear_module_state->__pyx_int_248330301);
  Py_CLEAR(clear_module_state->__pyx_int_260020090);
  Py_CLEAR(clear_module_state->__pyx_k__10);
  Py_CLEAR(clear_module_state->__pyx_k__11);
  Py_CLEAR(clear_module_state->__pyx_tuple_);
  Py_CLEAR(clear_module_state->__pyx_tuple__2);
  Py_CLEAR(clear_module_state->__pyx_tuple__3);
  Py_CLEAR(clear_module_state->__pyx_tuple__4);
  Py_CLEAR(clear_module_state->__pyx_tuple__7);
  Py_CLEAR(clear_module_state->__pyx_tuple__9);
  Py_CLEAR(clear_module_state->__pyx_tuple__12);
  Py_CLEAR(clear_module_state->__pyx_tuple__13);
  Py_CLEAR(clear_module_state->__pyx_tuple__14);
  Py_CLEAR(clear_module_state->__pyx_tuple__15);
  Py_CLEAR(clear_module_state->__pyx_tuple__16);
  Py_CLEAR(clear_module_state->__pyx_tuple__17);
  Py_CLEAR(clear_module_state->__pyx_tuple__18);
  Py_CLEAR(clear_module_state->__pyx_tuple__19);
  Py_CLEAR(clear_module_state->__pyx_tuple__21);
  Py_CLEAR(clear_module_state->__pyx_tuple__25);
  Py_CLEAR(clear_module_state->__pyx_tuple__32);
  Py_CLEAR(clear_module_state->__pyx_tuple__34);
  Py_CLEAR(clear_module_state->__pyx_tuple__41);
  Py_CLEAR(clear_module_state->__pyx_tuple__43);
  Py_CLEAR(clear_module_state->__pyx_tuple__49);
  Py_CLEAR(clear_module_state->__pyx_tuple__53);
  Py_CLEAR(clear_module_state->__pyx_tuple__59);
  Py_CLEAR(clear_module_state->__pyx_tuple__61);
  Py_CLEAR(clear_module_state->__pyx_tuple__63);
  Py_CLEAR(clear_module_state->__pyx_tuple__65);
  Py_CLEAR(clear_module_state->__pyx_tuple__67);
  Py_CLEAR(clear_module_state->__pyx_tuple__70);
  Py_CLEAR(clear_module_state->__pyx_tuple__76);
  Py_CLEAR(clear_module_state->__pyx_tuple__78);
  Py_CLEAR(clear_module_state->__pyx_tuple__90);
  Py_CLEAR(clear_module_state->__pyx_tuple__92);
  Py_CLEAR(clear_module_state->__pyx_tuple__95);
  Py_CLEAR(clear_module_state->__pyx_tuple__107);
  Py_CLEAR(clear_module_state->__pyx_tuple__118);
  Py_CLEAR(clear_module_state->__pyx_tuple__120);
  Py_CLEAR(clear_module_state->__pyx_tuple__122);
  Py_CLEAR(clear_module_state->__pyx_tuple__124);
  Py_CLEAR(clear_module_state->__pyx_tuple__126);
  Py_CLEAR(clear_module_state->__pyx_tuple__128);
  Py_CLEAR(clear_module_state->__pyx_tuple__134);
  Py_CLEAR(clear_module_state->__pyx_tuple__137);
  Py_CLEAR(clear_module_state->__pyx_tuple__145);
  Py_CLEAR(clear_module_state->__pyx_tuple__147);
  Py_CLEAR(clear_module_state->__pyx_tuple__149);
  Py_CLEAR(clear_module_state->__pyx_tuple__152);
  Py_CLEAR(clear_module_state->__pyx_tuple__154);
  Py_CLEAR(clear_module_state->__pyx_tuple__156);
  Py_CLEAR(clear_module_state->__pyx_tuple__158);
  Py_CLEAR(clear_module_state->__pyx_tuple__163);
  Py_CLEAR(clear_module_state->__pyx_tuple__165);
  Py_CLEAR(clear_module_state->__pyx_tuple__167);
  Py_CLEAR(clear_module_state->__pyx_tuple__170);
  Py_CLEAR(clear_module_state->__pyx_tuple__172);
  Py_CLEAR(clear_module_state->__pyx_tuple__180);
  Py_CLEAR(clear_module_state->__pyx_tuple__183);
  Py_CLEAR(clear_module_state->__pyx_tuple__185);
  Py_CLEAR(clear_module_state->__pyx_tuple__192);
  Py_CLEAR(clear_module_state->__pyx_tuple__205);
  Py_CLEAR(clear_module_state->__pyx_tuple__219);
  Py_CLEAR(clear_module_state->__pyx_tuple__225);
  Py_CLEAR(clear_module_state->__pyx_tuple__227);
  Py_CLEAR(clear_module_state->__pyx_tuple__238);
  Py_CLEAR(clear_module_state->__pyx_tuple__242);
  Py_CLEAR(clear_module_state->__pyx_tuple__245);
  Py_CLEAR(clear_module_state->__pyx_tuple__247);
  Py_CLEAR(clear_module_state->__pyx_tuple__249);
  Py_CLEAR(clear_module_state->__pyx_tuple__251);
  Py_CLEAR(clear_module_state->__pyx_tuple__253);
  Py_CLEAR(clear_module_state->__pyx_tuple__255);
  Py_CLEAR(clear_module_state->__pyx_tuple__257);
  Py_CLEAR(clear_module_state->__pyx_tuple__260);
  Py_CLEAR(clear_module_state->__pyx_tuple__264);
  Py_CLEAR(clear_module_state->__pyx_tuple__269);
  Py_CLEAR(clear_module_state->__pyx_tuple__271);
  Py_CLEAR(clear_module_state->__pyx_tuple__273);
  Py_CLEAR(clear_module_state->__pyx_tuple__277);
  Py_CLEAR(clear_module_state->__pyx_tuple__286);
  Py_CLEAR(clear_module_state->__pyx_tuple__293);
  Py_CLEAR(clear_module_state->__pyx_tuple__296);
  Py_CLEAR(clear_module_state->__pyx_tuple__298);
  Py_CLEAR(clear_module_state->__pyx_tuple__300);
  Py_CLEAR(clear_module_state->__pyx_tuple__302);
  Py_CLEAR(clear_module_state->__pyx_tuple__306);
  Py_CLEAR(clear_module_state->__pyx_tuple__308);
  Py_CLEAR(clear_module_state->__pyx_tuple__311);
  Py_CLEAR(clear_module_state->__pyx_tuple__313);
  Py_CLEAR(clear_module_state->__pyx_tuple__315);
  Py_CLEAR(clear_module_state->__pyx_tuple__318);
  Py_CLEAR(clear_module_state->__pyx_tuple__321);
  Py_CLEAR(clear_module_state->__pyx_tuple__324);
  Py_CLEAR(clear_module_state->__pyx_tuple__327);
  Py_CLEAR(clear_module_state->__pyx_tuple__330);
  Py_CLEAR(clear_module_state->__pyx_tuple__332);
  Py_CLEAR(clear_module_state->__pyx_tuple__334);
  Py_CLEAR(clear_module_state->__pyx_tuple__336);
  Py_CLEAR(clear_module_state->__pyx_tuple__347);
  Py_CLEAR(clear_module_state->__pyx_tuple__349);
  Py_CLEAR(clear_module_state->__pyx_tuple__351);
  Py_CLEAR(clear_module_state->__pyx_tuple__353);
  Py_CLEAR(clear_module_state->__pyx_tuple__356);
  Py_CLEAR(clear_module_state->__pyx_tuple__362);
  Py_CLEAR(clear_module_state->__pyx_tuple__376);
  Py_CLEAR(clear_module_state->__pyx_tuple__378);
  Py_CLEAR(clear_module_state->__pyx_tuple__381);
  Py_CLEAR(clear_module_state->__pyx_tuple__383);
  Py_CLEAR(clear_module_state->__pyx_tuple__385);
  Py_CLEAR(clear_module_state->__pyx_tuple__398);
  Py_CLEAR(clear_module_state->__pyx_tuple__401);
  Py_CLEAR(clear_module_state->__pyx_tuple__406);
  Py_CLEAR(clear_module_state->__pyx_tuple__411);
  Py_CLEAR(clear_module_state->__pyx_tuple__424);
  Py_CLEAR(clear_module_state->__pyx_tuple__432);
  Py_CLEAR(clear_module_state->__pyx_tuple__435);
  Py_CLEAR(clear_module_state->__pyx_tuple__437);
  Py_CLEAR(clear_module_state->__pyx_tuple__439);
  Py_CLEAR(clear_module_state->__pyx_tuple__443);
  Py_CLEAR(clear_module_state->__pyx_tuple__445);
  Py_CLEAR(clear_module_state->__pyx_tuple__447);
  Py_CLEAR(clear_module_state->__pyx_tuple__448);
  Py_CLEAR(clear_module_state->__pyx_tuple__450);
  Py_CLEAR(clear_module_state->__pyx_tuple__452);
  Py_CLEAR(clear_module_state->__pyx_tuple__455);
  Py_CLEAR(clear_module_state->__pyx_tuple__457);
  Py_CLEAR(clear_module_state->__pyx_tuple__458);
  Py_CLEAR(clear_module_state->__pyx_tuple__460);
  Py_CLEAR(clear_module_state->__pyx_tuple__462);
  Py_CLEAR(clear_module_state->__pyx_tuple__464);
  Py_CLEAR(clear_module_state->__pyx_tuple__466);
  Py_CLEAR(clear_module_state->__pyx_tuple__468);
  Py_CLEAR(clear_module_state->__pyx_tuple__470);
  Py_CLEAR(clear_module_state->__pyx_tuple__472);
  Py_CLEAR(clear_module_state->__pyx_tuple__474);
  Py_CLEAR(clear_module_state->__pyx_tuple__476);
  Py_CLEAR(clear_module_state->__pyx_tuple__478);
  Py_CLEAR(clear_module_state->__pyx_tuple__482);
  Py_CLEAR(clear_module_state->__pyx_tuple__484);
  Py_CLEAR(clear_module_state->__pyx_tuple__486);
  Py_CLEAR(clear_module_state->__pyx_tuple__488);
  Py_CLEAR(clear_module_state->__pyx_tuple__489);
  Py_CLEAR(clear_module_state->__pyx_tuple__493);
  Py_CLEAR(clear_module_state->__pyx_tuple__497);
  Py_CLEAR(clear_module_state->__pyx_tuple__499);
  Py_CLEAR(clear_module_state->__pyx_tuple__505);
  Py_CLEAR(clear_module_state->__pyx_codeobj__22);
  Py_CLEAR(clear_module_state->__pyx_codeobj__23);
  Py_CLEAR(clear_module_state->__pyx_codeobj__24);
  Py_CLEAR(clear_module_state->__pyx_codeobj__26);
  Py_CLEAR(clear_module_state->__pyx_codeobj__27);
  Py_CLEAR(clear_module_state->__pyx_codeobj__28);
  Py_CLEAR(clear_module_state->__pyx_codeobj__29);
  Py_CLEAR(clear_module_state->__pyx_codeobj__30);
  Py_CLEAR(clear_module_state->__pyx_codeobj__31);
  Py_CLEAR(clear_module_state->__pyx_codeobj__33);
  Py_CLEAR(clear_module_state->__pyx_codeobj__35);
  Py_CLEAR(clear_module_state->__pyx_codeobj__36);
  Py_CLEAR(clear_module_state->__pyx_codeobj__37);
  Py_CLEAR(clear_module_state->__pyx_codeobj__38);
  Py_CLEAR(clear_module_state->__pyx_codeobj__39);
  Py_CLEAR(clear_module_state->__pyx_codeobj__40);
  Py_CLEAR(clear_module_state->__pyx_codeobj__42);
  Py_CLEAR(clear_module_state->__pyx_codeobj__44);
  Py_CLEAR(clear_module_state->__pyx_codeobj__45);
  Py_CLEAR(clear_module_state->__pyx_codeobj__46);
  Py_CLEAR(clear_module_state->__pyx_codeobj__47);
  Py_CLEAR(clear_module_state->__pyx_codeobj__48);
  Py_CLEAR(clear_module_state->__pyx_codeobj__50);
  Py_CLEAR(clear_module_state->__pyx_codeobj__51);
  Py_CLEAR(clear_module_state->__pyx_codeobj__52);
  Py_CLEAR(clear_module_state->__pyx_codeobj__54);
  Py_CLEAR(clear_module_state->__pyx_codeobj__55);
  Py_CLEAR(clear_module_state->__pyx_codeobj__56);
  Py_CLEAR(clear_module_state->__pyx_codeobj__57);
  Py_CLEAR(clear_module_state->__pyx_codeobj__58);
  Py_CLEAR(clear_module_state->__pyx_codeobj__60);
  Py_CLEAR(clear_module_state->__pyx_codeobj__62);
  Py_CLEAR(clear_module_state->__pyx_codeobj__64);
  Py_CLEAR(clear_module_state->__pyx_codeobj__66);
  Py_CLEAR(clear_module_state->__pyx_codeobj__68);
  Py_CLEAR(clear_module_state->__pyx_codeobj__69);
  Py_CLEAR(clear_module_state->__pyx_codeobj__71);
  Py_CLEAR(clear_module_state->__pyx_codeobj__72);
  Py_CLEAR(clear_module_state->__pyx_codeobj__73);
  Py_CLEAR(clear_module_state->__pyx_codeobj__74);
  Py_CLEAR(clear_module_state->__pyx_codeobj__75);
  Py_CLEAR(clear_module_state->__pyx_codeobj__77);
  Py_CLEAR(clear_module_state->__pyx_codeobj__79);
  Py_CLEAR(clear_module_state->__pyx_codeobj__80);
  Py_CLEAR(clear_module_state->__pyx_codeobj__81);
  Py_CLEAR(clear_module_state->__pyx_codeobj__82);
  Py_CLEAR(clear_module_state->__pyx_codeobj__83);
  Py_CLEAR(clear_module_state->__pyx_codeobj__84);
  Py_CLEAR(clear_module_state->__pyx_codeobj__85);
  Py_CLEAR(clear_module_state->__pyx_codeobj__86);
  Py_CLEAR(clear_module_state->__pyx_codeobj__87);
  Py_CLEAR(clear_module_state->__pyx_codeobj__88);
  Py_CLEAR(clear_module_state->__pyx_codeobj__89);
  Py_CLEAR(clear_module_state->__pyx_codeobj__91);
  Py_CLEAR(clear_module_state->__pyx_codeobj__93);
  Py_CLEAR(clear_module_state->__pyx_codeobj__94);
  Py_CLEAR(clear_module_state->__pyx_codeobj__96);
  Py_CLEAR(clear_module_state->__pyx_codeobj__97);
  Py_CLEAR(clear_module_state->__pyx_codeobj__98);
  Py_CLEAR(clear_module_state->__pyx_codeobj__99);
  Py_CLEAR(clear_module_state->__pyx_codeobj__100);
  Py_CLEAR(clear_module_state->__pyx_codeobj__101);
  Py_CLEAR(clear_module_state->__pyx_codeobj__102);
  Py_CLEAR(clear_module_state->__pyx_codeobj__103);
  Py_CLEAR(clear_module_state->__pyx_codeobj__104);
  Py_CLEAR(clear_module_state->__pyx_codeobj__105);
  Py_CLEAR(clear_module_state->__pyx_codeobj__106);
  Py_CLEAR(clear_module_state->__pyx_codeobj__108);
  Py_CLEAR(clear_module_state->__pyx_codeobj__109);
  Py_CLEAR(clear_module_state->__pyx_codeobj__110);
  Py_CLEAR(clear_module_state->__pyx_codeobj__111);
  Py_CLEAR(clear_module_state->__pyx_codeobj__112);
  Py_CLEAR(clear_module_state->__pyx_codeobj__113);
  Py_CLEAR(clear_module_state->__pyx_codeobj__114);
  Py_CLEAR(clear_module_state->__pyx_codeobj__115);
  Py_CLEAR(clear_module_state->__pyx_codeobj__116);
  Py_CLEAR(clear_module_state->__pyx_codeobj__117);
  Py_CLEAR(clear_module_state->__pyx_codeobj__119);
  Py_CLEAR(clear_module_state->__pyx_codeobj__121);
  Py_CLEAR(clear_module_state->__pyx_codeobj__123);
  Py_CLEAR(clear_module_state->__pyx_codeobj__125);
  Py_CLEAR(clear_module_state->__pyx_codeobj__127);
  Py_CLEAR(clear_module_state->__pyx_codeobj__129);
  Py_CLEAR(clear_module_state->__pyx_codeobj__130);
  Py_CLEAR(clear_module_state->__pyx_codeobj__131);
  Py_CLEAR(clear_module_state->__pyx_codeobj__132);
  Py_CLEAR(clear_module_state->__pyx_codeobj__133);
  Py_CLEAR(clear_module_state->__pyx_codeobj__135);
  Py_CLEAR(clear_module_state->__pyx_codeobj__136);
  Py_CLEAR(clear_module_state->__pyx_codeobj__138);
  Py_CLEAR(clear_module_state->__pyx_codeobj__139);
  Py_CLEAR(clear_module_state->__pyx_codeobj__140);
  Py_CLEAR(clear_module_state->__pyx_codeobj__141);
  Py_CLEAR(clear_module_state->__pyx_codeobj__142);
  Py_CLEAR(clear_module_state->__pyx_codeobj__143);
  Py_CLEAR(clear_module_state->__pyx_codeobj__144);
  Py_CLEAR(clear_module_state->__pyx_codeobj__146);
  Py_CLEAR(clear_module_state->__pyx_codeobj__148);
  Py_CLEAR(clear_module_state->__pyx_codeobj__150);
  Py_CLEAR(clear_module_state->__pyx_codeobj__151);
  Py_CLEAR(clear_module_state->__pyx_codeobj__153);
  Py_CLEAR(clear_module_state->__pyx_codeobj__155);
  Py_CLEAR(clear_module_state->__pyx_codeobj__157);
  Py_CLEAR(clear_module_state->__pyx_codeobj__159);
  Py_CLEAR(clear_module_state->__pyx_codeobj__160);
  Py_CLEAR(clear_module_state->__pyx_codeobj__161);
  Py_CLEAR(clear_module_state->__pyx_codeobj__162);
  Py_CLEAR(clear_module_state->__pyx_codeobj__164);
  Py_CLEAR(clear_module_state->__pyx_codeobj__166);
  Py_CLEAR(clear_module_state->__pyx_codeobj__168);
  Py_CLEAR(clear_module_state->__pyx_codeobj__169);
  Py_CLEAR(clear_module_state->__pyx_codeobj__171);
  Py_CLEAR(clear_module_state->__pyx_codeobj__173);
  Py_CLEAR(clear_module_state->__pyx_codeobj__174);
  Py_CLEAR(clear_module_state->__pyx_codeobj__175);
  Py_CLEAR(clear_module_state->__pyx_codeobj__176);
  Py_CLEAR(clear_module_state->__pyx_codeobj__177);
  Py_CLEAR(clear_module_state->__pyx_codeobj__178);
  Py_CLEAR(clear_module_state->__pyx_codeobj__179);
  Py_CLEAR(clear_module_state->__pyx_codeobj__181);
  Py_CLEAR(clear_module_state->__pyx_codeobj__182);
  Py_CLEAR(clear_module_state->__pyx_codeobj__184);
  Py_CLEAR(clear_module_state->__pyx_codeobj__186);
  Py_CLEAR(clear_module_state->__pyx_codeobj__187);
  Py_CLEAR(clear_module_state->__pyx_codeobj__188);
  Py_CLEAR(clear_module_state->__pyx_codeobj__189);
  Py_CLEAR(clear_module_state->__pyx_codeobj__190);
  Py_CLEAR(clear_module_state->__pyx_codeobj__191);
  Py_CLEAR(clear_module_state->__pyx_codeobj__193);
  Py_CLEAR(clear_module_state->__pyx_codeobj__194);
  Py_CLEAR(clear_module_state->__pyx_codeobj__195);
  Py_CLEAR(clear_module_state->__pyx_codeobj__196);
  Py_CLEAR(clear_module_state->__pyx_codeobj__197);
  Py_CLEAR(clear_module_state->__pyx_codeobj__198);
  Py_CLEAR(clear_module_state->__pyx_codeobj__199);
  Py_CLEAR(clear_module_state->__pyx_codeobj__200);
  Py_CLEAR(clear_module_state->__pyx_codeobj__201);
  Py_CLEAR(clear_module_state->__pyx_codeobj__202);
  Py_CLEAR(clear_module_state->__pyx_codeobj__203);
  Py_CLEAR(clear_module_state->__pyx_codeobj__204);
  Py_CLEAR(clear_module_state->__pyx_codeobj__206);
  Py_CLEAR(clear_module_state->__pyx_codeobj__207);
  Py_CLEAR(clear_module_state->__pyx_codeobj__208);
  Py_CLEAR(clear_module_state->__pyx_codeobj__209);
  Py_CLEAR(clear_module_state->__pyx_codeobj__210);
  Py_CLEAR(clear_module_state->__pyx_codeobj__211);
  Py_CLEAR(clear_module_state->__pyx_codeobj__212);
  Py_CLEAR(clear_module_state->__pyx_codeobj__213);
  Py_CLEAR(clear_module_state->__pyx_codeobj__214);
  Py_CLEAR(clear_module_state->__pyx_codeobj__215);
  Py_CLEAR(clear_module_state->__pyx_codeobj__216);
  Py_CLEAR(clear_module_state->__pyx_codeobj__217);
  Py_CLEAR(clear_module_state->__pyx_codeobj__218);
  Py_CLEAR(clear_module_state->__pyx_codeobj__220);
  Py_CLEAR(clear_module_state->__pyx_codeobj__221);
  Py_CLEAR(clear_module_state->__pyx_codeobj__222);
  Py_CLEAR(clear_module_state->__pyx_codeobj__223);
  Py_CLEAR(clear_module_state->__pyx_codeobj__224);
  Py_CLEAR(clear_module_state->__pyx_codeobj__226);
  Py_CLEAR(clear_module_state->__pyx_codeobj__228);
  Py_CLEAR(clear_module_state->__pyx_codeobj__229);
  Py_CLEAR(clear_module_state->__pyx_codeobj__230);
  Py_CLEAR(clear_module_state->__pyx_codeobj__231);
  Py_CLEAR(clear_module_state->__pyx_codeobj__232);
  Py_CLEAR(clear_module_state->__pyx_codeobj__233);
  Py_CLEAR(clear_module_state->__pyx_codeobj__234);
  Py_CLEAR(clear_module_state->__pyx_codeobj__235);
  Py_CLEAR(clear_module_state->__pyx_codeobj__236);
  Py_CLEAR(clear_module_state->__pyx_codeobj__237);
  Py_CLEAR(clear_module_state->__pyx_codeobj__239);
  Py_CLEAR(clear_module_state->__pyx_codeobj__240);
  Py_CLEAR(clear_module_state->__pyx_codeobj__241);
  Py_CLEAR(clear_module_state->__pyx_codeobj__243);
  Py_CLEAR(clear_module_state->__pyx_codeobj__244);
  Py_CLEAR(clear_module_state->__pyx_codeobj__246);
  Py_CLEAR(clear_module_state->__pyx_codeobj__248);
  Py_CLEAR(clear_module_state->__pyx_codeobj__250);
  Py_CLEAR(clear_module_state->__pyx_codeobj__252);
  Py_CLEAR(clear_module_state->__pyx_codeobj__254);
  Py_CLEAR(clear_module_state->__pyx_codeobj__256);
  Py_CLEAR(clear_module_state->__pyx_codeobj__258);
  Py_CLEAR(clear_module_state->__pyx_codeobj__259);
  Py_CLEAR(clear_module_state->__pyx_codeobj__261);
  Py_CLEAR(clear_module_state->__pyx_codeobj__262);
  Py_CLEAR(clear_module_state->__pyx_codeobj__263);
  Py_CLEAR(clear_module_state->__pyx_codeobj__265);
  Py_CLEAR(clear_module_state->__pyx_codeobj__266);
  Py_CLEAR(clear_module_state->__pyx_codeobj__267);
  Py_CLEAR(clear_module_state->__pyx_codeobj__268);
  Py_CLEAR(clear_module_state->__pyx_codeobj__270);
  Py_CLEAR(clear_module_state->__pyx_codeobj__272);
  Py_CLEAR(clear_module_state->__pyx_codeobj__274);
  Py_CLEAR(clear_module_state->__pyx_codeobj__275);
  Py_CLEAR(clear_module_state->__pyx_codeobj__276);
  Py_CLEAR(clear_module_state->__pyx_codeobj__278);
  Py_CLEAR(clear_module_state->__pyx_codeobj__279);
  Py_CLEAR(clear_module_state->__pyx_codeobj__280);
  Py_CLEAR(clear_module_state->__pyx_codeobj__281);
  Py_CLEAR(clear_module_state->__pyx_codeobj__282);
  Py_CLEAR(clear_module_state->__pyx_codeobj__283);
  Py_CLEAR(clear_module_state->__pyx_codeobj__284);
  Py_CLEAR(clear_module_state->__pyx_codeobj__285);
  Py_CLEAR(clear_module_state->__pyx_codeobj__287);
  Py_CLEAR(clear_module_state->__pyx_codeobj__288);
  Py_CLEAR(clear_module_state->__pyx_codeobj__289);
  Py_CLEAR(clear_module_state->__pyx_codeobj__290);
  Py_CLEAR(clear_module_state->__pyx_codeobj__291);
  Py_CLEAR(clear_module_state->__pyx_codeobj__292);
  Py_CLEAR(clear_module_state->__pyx_codeobj__294);
  Py_CLEAR(clear_module_state->__pyx_codeobj__295);
  Py_CLEAR(clear_module_state->__pyx_codeobj__297);
  Py_CLEAR(clear_module_state->__pyx_codeobj__299);
  Py_CLEAR(clear_module_state->__pyx_codeobj__301);
  Py_CLEAR(clear_module_state->__pyx_codeobj__303);
  Py_CLEAR(clear_module_state->__pyx_codeobj__304);
  Py_CLEAR(clear_module_state->__pyx_codeobj__305);
  Py_CLEAR(clear_module_state->__pyx_codeobj__307);
  Py_CLEAR(clear_module_state->__pyx_codeobj__309);
  Py_CLEAR(clear_module_state->__pyx_codeobj__310);
  Py_CLEAR(clear_module_state->__pyx_codeobj__312);
  Py_CLEAR(clear_module_state->__pyx_codeobj__314);
  Py_CLEAR(clear_module_state->__pyx_codeobj__316);
  Py_CLEAR(clear_module_state->__pyx_codeobj__317);
  Py_CLEAR(clear_module_state->__pyx_codeobj__319);
  Py_CLEAR(clear_module_state->__pyx_codeobj__320);
  Py_CLEAR(clear_module_state->__pyx_codeobj__322);
  Py_CLEAR(clear_module_state->__pyx_codeobj__323);
  Py_CLEAR(clear_module_state->__pyx_codeobj__325);
  Py_CLEAR(clear_module_state->__pyx_codeobj__326);
  Py_CLEAR(clear_module_state->__pyx_codeobj__328);
  Py_CLEAR(clear_module_state->__pyx_codeobj__329);
  Py_CLEAR(clear_module_state->__pyx_codeobj__331);
  Py_CLEAR(clear_module_state->__pyx_codeobj__333);
  Py_CLEAR(clear_module_state->__pyx_codeobj__335);
  Py_CLEAR(clear_module_state->__pyx_codeobj__337);
  Py_CLEAR(clear_module_state->__pyx_codeobj__338);
  Py_CLEAR(clear_module_state->__pyx_codeobj__339);
  Py_CLEAR(clear_module_state->__pyx_codeobj__340);
  Py_CLEAR(clear_module_state->__pyx_codeobj__341);
  Py_CLEAR(clear_module_state->__pyx_codeobj__342);
  Py_CLEAR(clear_module_state->__pyx_codeobj__343);
  Py_CLEAR(clear_module_state->__pyx_codeobj__344);
  Py_CLEAR(clear_module_state->__pyx_codeobj__345);
  Py_CLEAR(clear_module_state->__pyx_codeobj__346);
  Py_CLEAR(clear_module_state->__pyx_codeobj__348);
  Py_CLEAR(clear_module_state->__pyx_codeobj__350);
  Py_CLEAR(clear_module_state->__pyx_codeobj__352);
  Py_CLEAR(clear_module_state->__pyx_codeobj__354);
  Py_CLEAR(clear_module_state->__pyx_codeobj__355);
  Py_CLEAR(clear_module_state->__pyx_codeobj__357);
  Py_CLEAR(clear_module_state->__pyx_codeobj__358);
  Py_CLEAR(clear_module_state->__pyx_codeobj__359);
  Py_CLEAR(clear_module_state->__pyx_codeobj__360);
  Py_CLEAR(clear_module_state->__pyx_codeobj__361);
  Py_CLEAR(clear_module_state->__pyx_codeobj__363);
  Py_CLEAR(clear_module_state->__pyx_codeobj__364);
  Py_CLEAR(clear_module_state->__pyx_codeobj__365);
  Py_CLEAR(clear_module_state->__pyx_codeobj__366);
  Py_CLEAR(clear_module_state->__pyx_codeobj__367);
  Py_CLEAR(clear_module_state->__pyx_codeobj__368);
  Py_CLEAR(clear_module_state->__pyx_codeobj__369);
  Py_CLEAR(clear_module_state->__pyx_codeobj__370);
  Py_CLEAR(clear_module_state->__pyx_codeobj__371);
  Py_CLEAR(clear_module_state->__pyx_codeobj__372);
  Py_CLEAR(clear_module_state->__pyx_codeobj__373);
  Py_CLEAR(clear_module_state->__pyx_codeobj__374);
  Py_CLEAR(clear_module_state->__pyx_codeobj__375);
  Py_CLEAR(clear_module_state->__pyx_codeobj__377);
  Py_CLEAR(clear_module_state->__pyx_codeobj__379);
  Py_CLEAR(clear_module_state->__pyx_codeobj__380);
  Py_CLEAR(clear_module_state->__pyx_codeobj__382);
  Py_CLEAR(clear_module_state->__pyx_codeobj__384);
  Py_CLEAR(clear_module_state->__pyx_codeobj__386);
  Py_CLEAR(clear_module_state->__pyx_codeobj__387);
  Py_CLEAR(clear_module_state->__pyx_codeobj__388);
  Py_CLEAR(clear_module_state->__pyx_codeobj__389);
  Py_CLEAR(clear_module_state->__pyx_codeobj__390);
  Py_CLEAR(clear_module_state->__pyx_codeobj__391);
  Py_CLEAR(clear_module_state->__pyx_codeobj__392);
  Py_CLEAR(clear_module_state->__pyx_codeobj__393);
  Py_CLEAR(clear_module_state->__pyx_codeobj__394);
  Py_CLEAR(clear_module_state->__pyx_codeobj__395);
  Py_CLEAR(clear_module_state->__pyx_codeobj__396);
  Py_CLEAR(clear_module_state->__pyx_codeobj__397);
  Py_CLEAR(clear_module_state->__pyx_codeobj__399);
  Py_CLEAR(clear_module_state->__pyx_codeobj__400);
  Py_CLEAR(clear_module_state->__pyx_codeobj__402);
  Py_CLEAR(clear_module_state->__pyx_codeobj__403);
  Py_CLEAR(clear_module_state->__pyx_codeobj__404);
  Py_CLEAR(clear_module_state->__pyx_codeobj__405);
  Py_CLEAR(clear_module_state->__pyx_codeobj__407);
  Py_CLEAR(clear_module_state->__pyx_codeobj__408);
  Py_CLEAR(clear_module_state->__pyx_codeobj__409);
  Py_CLEAR(clear_module_state->__pyx_codeobj__410);
  Py_CLEAR(clear_module_state->__pyx_codeobj__412);
  Py_CLEAR(clear_module_state->__pyx_codeobj__413);
  Py_CLEAR(clear_module_state->__pyx_codeobj__414);
  Py_CLEAR(clear_module_state->__pyx_codeobj__415);
  Py_CLEAR(clear_module_state->__pyx_codeobj__416);
  Py_CLEAR(clear_module_state->__pyx_codeobj__417);
  Py_CLEAR(clear_module_state->__pyx_codeobj__418);
  Py_CLEAR(clear_module_state->__pyx_codeobj__419);
  Py_CLEAR(clear_module_state->__pyx_codeobj__420);
  Py_CLEAR(clear_module_state->__pyx_codeobj__421);
  Py_CLEAR(clear_module_state->__pyx_codeobj__422);
  Py_CLEAR(clear_module_state->__pyx_codeobj__423);
  Py_CLEAR(clear_module_state->__pyx_codeobj__425);
  Py_CLEAR(clear_module_state->__pyx_codeobj__426);
  Py_CLEAR(clear_module_state->__pyx_codeobj__427);
  Py_CLEAR(clear_module_state->__pyx_codeobj__428);
  Py_CLEAR(clear_module_state->__pyx_codeobj__429);
  Py_CLEAR(clear_module_state->__pyx_codeobj__430);
  Py_CLEAR(clear_module_state->__pyx_codeobj__431);
  Py_CLEAR(clear_module_state->__pyx_codeobj__433);
  Py_CLEAR(clear_module_state->__pyx_codeobj__434);
  Py_CLEAR(clear_module_state->__pyx_codeobj__436);
  Py_CLEAR(clear_module_state->__pyx_codeobj__438);
  Py_CLEAR(clear_module_state->__pyx_codeobj__440);
  Py_CLEAR(clear_module_state->__pyx_codeobj__441);
  Py_CLEAR(clear_module_state->__pyx_codeobj__442);
  Py_CLEAR(clear_module_state->__pyx_codeobj__444);
  Py_CLEAR(clear_module_state->__pyx_codeobj__446);
  Py_CLEAR(clear_module_state->__pyx_codeobj__449);
  Py_CLEAR(clear_module_state->__pyx_codeobj__451);
  Py_CLEAR(clear_module_state->__pyx_codeobj__453);
  Py_CLEAR(clear_module_state->__pyx_codeobj__454);
  Py_CLEAR(clear_module_state->__pyx_codeobj__456);
  Py_CLEAR(clear_module_state->__pyx_codeobj__459);
  Py_CLEAR(clear_module_state->__pyx_codeobj__461);
  Py_CLEAR(clear_module_state->__pyx_codeobj__463);
  Py_CLEAR(clear_module_state->__pyx_codeobj__465);
  Py_CLEAR(clear_module_state->__pyx_codeobj__467);
  Py_CLEAR(clear_module_state->__pyx_codeobj__469);
  Py_CLEAR(clear_module_state->__pyx_codeobj__471);
  Py_CLEAR(clear_module_state->__pyx_codeobj__473);
  Py_CLEAR(clear_module_state->__pyx_codeobj__475);
  Py_CLEAR(clear_module_state->__pyx_codeobj__477);
  Py_CLEAR(clear_module_state->__pyx_codeobj__479);
  Py_CLEAR(clear_module_state->__pyx_codeobj__480);
  Py_CLEAR(clear_module_state->__pyx_codeobj__481);
  Py_CLEAR(clear_module_state->__pyx_codeobj__483);
  Py_CLEAR(clear_module_state->__pyx_codeobj__485);
  Py_CLEAR(clear_module_state->__pyx_codeobj__487);
  Py_CLEAR(clear_module_state->__pyx_codeobj__490);
  Py_CLEAR(clear_module_state->__pyx_codeobj__491);
  Py_CLEAR(clear_module_state->__pyx_codeobj__492);
  Py_CLEAR(clear_module_state->__pyx_codeobj__494);
  Py_CLEAR(clear_module_state->__pyx_codeobj__495);
  Py_CLEAR(clear_module_state->__pyx_codeobj__496);
  Py_CLEAR(clear_module_state->__pyx_codeobj__498);
  Py_CLEAR(clear_module_state->__pyx_codeobj__500);
  Py_CLEAR(clear_module_state->__pyx_codeobj__501);
  Py_CLEAR(clear_module_state->__pyx_codeobj__502);
  Py_CLEAR(clear_module_state->__pyx_codeobj__503);
  Py_CLEAR(clear_module_state->__pyx_codeobj__504);
  Py_CLEAR(clear_module_state->__pyx_codeobj__506);
  Py_CLEAR(clear_module_state->__pyx_codeobj__507);
  Py_CLEAR(clear_module_state->__pyx_codeobj__508);
  Py_CLEAR(clear_module_state->__pyx_codeobj__509);
  Py_CLEAR(clear_module_state->__pyx_codeobj__510);
  Py_CLEAR(clear_module_state->__pyx_codeobj__511);
  Py_CLEAR(clear_module_state->__pyx_codeobj__512);
  Py_CLEAR(clear_module_state->__pyx_codeobj__513);
  Py_CLEAR(clear_module_state->__pyx_codeobj__514);
  return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstate *traverse_module_state = __pyx_mstate(m);
  if (!traverse_module_state) return 0;
  Py_VISIT(traverse_module_state->__pyx_d);
  Py_VISIT(traverse_module_state->__pyx_b);
  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
  Py_VISIT(traverse_module_state->__pyx_empty_tuple);
  Py_VISIT(traverse_module_state->__pyx_empty_bytes);
  Py_VISIT(traverse_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
  #endif
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Expr);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Event);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Column);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Row);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_NLRow);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Solution);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_DomainChanges);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_BoundChange);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Node);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Variable);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Constraint);
  Py_VISIT(traverse_module_state->__pyx_ptype_9pyscipopt_4scip_Model);
  Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
  Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4bool_bool);
  Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_7complex_complex);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_DetProbData);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_DetProbData);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_ConsPart);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_ConsPart);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_VarPart);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_VarPart);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGColumn);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_GCGColumn);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_Detector);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_Detector);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PricingSolver);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PricingSolver);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_Score);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_Score);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PartialDecomposition);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_ConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_VarClassifier);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_VarClassifier);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_Model);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_Model);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_GCGPricingModel);
  Py_VISIT(traverse_module_state->__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel);
  Py_VISIT(traverse_module_state->__pyx_type_8pygcgopt_3gcg_GCGMasterModel);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsClassifier___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsClassifier___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsClassifier_classify);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsClassifier_freeConsClassifie);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_addClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_assignConsToClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getAllSubsets);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getClassName);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getClassNameOfCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getClassOfCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getNClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getNConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getNConssOfClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_getName);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_isConsClassified);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_reduceClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_removeEmptyClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_setClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_setClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_ConsPart_setClassName);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Consclassifier_0_yields_a_classi);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addCandidatesNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addConsPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addPartialdecToAnces);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addPartialdecToFinis);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addPartialdecToFinis_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addPartialdecToOpen);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_addVarPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_candidatesNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_classificationtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_clearAncestorPartial);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_clearCurrentPartiald);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_clearFinishedPartial);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_conspartitioncollect);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_createConsPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_createConssAdjacency);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_createVarPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_freeTemporaryData);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getAncestorPartialde);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getConsPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getConsPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getConssForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getConssForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getFinishedPartialde);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getFinishedPartialde_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getIndexForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getIndexForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getModel);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNAncestorPartiald);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNConsPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNConssForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNConssForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNFinishedPartiald);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNNonzeros);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNOpenPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNVarPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getNVarsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getOpenPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getOrigVarsFixedZero);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getRelevantConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getRelevantVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getSortedCandidatesN);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getValsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getVarPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getVarPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_getVarsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isAssignedToOrigProb);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isConsCardinalityCon);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isConsSetpp);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isConsSetppc);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isConssAdjInitialize);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_isPartialdecDuplicat);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_nblockscandidatescal);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_partialdecIsNoDuplic);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_postprocessingtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_sortFinishedForScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_translatePartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_translatingtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_DetProbData_varpartitioncollecti);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Detector_callback_returned_of_ty);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_exitDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_finishPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_freeDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_initDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_postprocessPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_propagatePartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_setParamAggressive);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_setParamDefault);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detector_setParamFast);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Expected_iterable_as_first_argum);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Format);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGColumn);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGColumn___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGColumn___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGMasterModel);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGMasterModel___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGMasterModel___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGMasterModel_addCol);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGMasterModel_getOrigvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGPricingModel);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGPricingModel___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGPricingModel___setstate_cytho);
  Py_VISIT(traverse_module_state->__pyx_n_s_GCGPricingModel_createGcgCol);
  Py_VISIT(traverse_module_state->__pyx_n_s_INFEASIBLE);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iterable);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Length_of_value_for_decchar_must);
  Py_VISIT(traverse_module_state->__pyx_n_s_List);
  Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_addDecomposition);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_addDecompositionFromConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_addPreexistingPartialDecom);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_addVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_createDecomposition);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_detect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getDetprobdataOrig);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getDetprobdataPresolved);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getDualbound);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getMasterProb);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getMastervars);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getNConsClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getNVarClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_getPartDecompFromID);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includeConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includeDefaultPlugins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includeDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includePricingSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includeScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_includeVarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listConsClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listDecompositions);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listDetectors);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listPricingSolvers);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listScores);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_listVarClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_optimize);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_presolve);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_printStatistics);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_printVersion);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setDetectorEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setDetectorFinishingEnable);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setDetectorPostprocessingE);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setGCGSeparating);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setPricingSolverEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setPricingSolverExactEnabl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setPricingSolverHeuristicE);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_setVarClassifierEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Model_writeAllDecomps);
  Py_VISIT(traverse_module_state->__pyx_n_s_NOTAPPLICABLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_OPTIMAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_ALL);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_BOTH);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_COMPLETE);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_COMPLETED_CONSTOMASTER);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_CONS_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_GCG_PRICINGSTATUS___setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_LINKING);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_MASTER);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_NOT);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_ONLY_MASTER);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_ONLY_PRICING);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_PARTIAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_SCIP_CALL);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_USERGIVEN);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_USERGIVEN___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_USERGIVEN___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_VAR_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho);
  Py_VISIT(traverse_module_state->__pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition___copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition___reduce_cy);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition___setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition__repr_png);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition__repr_svg);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addAncestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addClockTim);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addDecChang);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addNNewBloc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctConss_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctConss_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctVarsF);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctVarsT);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_addPctVarsT_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_aggInfoCalc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_alreadyAssi);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_assignCurre);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_assignOpenC);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_assignSmall);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_buildDecCha);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_calcAggrega);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_calcStairli);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_checkAllCon);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_checkConsis);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_completeByC);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_completeByC_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_completeGre);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_considerImp);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_copyPartiti);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_deleteEmpty);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_deleteOpenc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_deleteOpenv);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_displayInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_findVarsLin);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_findVarsLin_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConsToBl);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConsToBl_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConsToMa);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConssToB);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConssToB_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixConssToM);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixVarToLin);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixVarToMas);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_fixVarToSta);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getAncestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getAncestor_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getBlocksFo);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getConssFor);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getConssFor_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getDetector_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getDetector_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getDetprobd);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getFinished);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getHashValu);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getID);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getLinkingv);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getMasterco);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getMasterva);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNAncesto);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNCoeffsF);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNCoeffsF_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNConssFo);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNDetecto);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNLinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNMasterc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNMasterv);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNNewBloc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNNewBloc_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNOpencon);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNOpenvar);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNReps);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNStairli);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNTotalSt);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNVarsFor);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getNVarsFor_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getOpencons);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getOpenvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss_4);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss_5);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctConss_6);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsF);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsF_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getPctVarsT_4);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getRepForBl);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getRepVarma);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getTranslat);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getUsergive);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getVarProbi);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_getVarsForB);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_hasSetppMas);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_hasSetppcMa);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_hasSetppcca);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isAssignedT);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isComplete);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isConsMaste);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isConsOpenc);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isTrivial);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarBlockv);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarLinkin);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarOpenva);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarStairl);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_isVarStairl_2);
  Py_VISIT(traverse_module_state->__pyx_kp_u_PartialDecomposition_nBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_prepare);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_refineToBlo);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_refineToMas);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_removeAnces);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_removeMaste);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setAncestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setConsPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setConsToMa);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setDetector_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setDetector_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setDetector_4);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setFinished);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setFinished_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctConss_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctConss_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctVarsF);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctVarsT);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setPctVarsT_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setStemsFro);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setTranslat);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setUsergive);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setVarParti);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setVarToBlo);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setVarToLin);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setVarToMas);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_setVarToSta);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_shouldCompl);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_showVisuali);
  Py_VISIT(traverse_module_state->__pyx_n_s_PartialDecomposition_sort);
  Py_VISIT(traverse_module_state->__pyx_n_s_Path);
  Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_exitSolution);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_exitSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_freeSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_initSolution);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_initSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_solve);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_solveHeuristic);
  Py_VISIT(traverse_module_state->__pyx_n_s_PricingSolver_updateSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_SOLVERLIMIT);
  Py_VISIT(traverse_module_state->__pyx_n_s_Score);
  Py_VISIT(traverse_module_state->__pyx_n_s_Score___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Score___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Score_scorecalculate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Score_scorefree);
  Py_VISIT(traverse_module_state->__pyx_n_s_TemporaryDirectory);
  Py_VISIT(traverse_module_state->__pyx_kp_u_The_value_of_the_key_newpartiald);
  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNBOUNDED);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNKNOWN);
  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarClassifier___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarClassifier___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarClassifier_classify);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarClassifier_freeVarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_addClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_assignVarToClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getAllSubsets);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getClassName);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getClassNameOfVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getClassOfVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getNClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getNVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getNVarsOfClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_getName);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_isVarClassified);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_reduceClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_removeEmptyClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_setClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_setClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_VarPart_setClassName);
  Py_VISIT(traverse_module_state->__pyx_kp_u_Varclassifier_0_yields_a_classif);
  Py_VISIT(traverse_module_state->__pyx_n_s_Warning);
  Py_VISIT(traverse_module_state->__pyx_n_s__20);
  Py_VISIT(traverse_module_state->__pyx_n_s__515);
  Py_VISIT(traverse_module_state->__pyx_kp_u__6);
  Py_VISIT(traverse_module_state->__pyx_kp_u__8);
  Py_VISIT(traverse_module_state->__pyx_n_s_addAncestorID);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_addCandidatesNBlocksNVotes);
  Py_VISIT(traverse_module_state->__pyx_n_s_addClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_addClockTime);
  Py_VISIT(traverse_module_state->__pyx_n_s_addCol);
  Py_VISIT(traverse_module_state->__pyx_n_s_addConsPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_addDecChangesFromAncestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_addDecomposition);
  Py_VISIT(traverse_module_state->__pyx_n_s_addDecompositionFromConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_addDetectorChainInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_addNNewBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPartialdecToAncestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPartialdecToFinished);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPartialdecToFinishedUnchecked);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPartialdecToOpen);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctConssFromFree);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctConssToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctConssToBorder);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctVarsFromFree);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctVarsToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPctVarsToBorder);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPreexistingPartialDecompositi);
  Py_VISIT(traverse_module_state->__pyx_n_s_addVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_addVarPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_aggInfoCalculated);
  Py_VISIT(traverse_module_state->__pyx_n_s_all);
  Py_VISIT(traverse_module_state->__pyx_kp_u_alldecompositions);
  Py_VISIT(traverse_module_state->__pyx_n_s_alreadyAssignedConssToBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_ancestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_ancestor_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_args);
  Py_VISIT(traverse_module_state->__pyx_n_s_assignConsToClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_assignCurrentStairlinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_assignOpenConssToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_assignSmallestComponentsButOneCo);
  Py_VISIT(traverse_module_state->__pyx_n_s_assignVarToClass);
  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
  Py_VISIT(traverse_module_state->__pyx_n_s_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_block1_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_block2_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_block_conss);
  Py_VISIT(traverse_module_state->__pyx_n_s_block_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_blockrepid);
  Py_VISIT(traverse_module_state->__pyx_kp_u_border_area);
  Py_VISIT(traverse_module_state->__pyx_n_s_both);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_buildDecChainString);
  Py_VISIT(traverse_module_state->__pyx_n_s_c);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_consclassifiername);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_decchar);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_decinfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_desc);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_detectorname);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_directory);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_extension);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_scorename);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_shortname);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_solvername);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_varclassifiername);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_vars);
  Py_VISIT(traverse_module_state->__pyx_n_s_calcAggregationInformation);
  Py_VISIT(traverse_module_state->__pyx_n_s_calcStairlinkingVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_candidate);
  Py_VISIT(traverse_module_state->__pyx_n_s_candidates);
  Py_VISIT(traverse_module_state->__pyx_n_s_candidatesNBlocks);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_Column_with_GCG_CO);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_ConsPart_with_Cons);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_DetProbData_with_D);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_Model_with_SCIP_NU);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_PartialDecompositi);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_create_VarPart_with_VarPa);
  Py_VISIT(traverse_module_state->__pyx_n_s_checkAllConssAssigned);
  Py_VISIT(traverse_module_state->__pyx_n_s_checkConsistency);
  Py_VISIT(traverse_module_state->__pyx_n_s_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
  Py_VISIT(traverse_module_state->__pyx_n_u_classic);
  Py_VISIT(traverse_module_state->__pyx_n_s_classificationtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_classify);
  Py_VISIT(traverse_module_state->__pyx_n_s_classindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_clearAncestorPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_clearCurrentPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_clearFinishedPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
  Py_VISIT(traverse_module_state->__pyx_n_s_clocktime);
  Py_VISIT(traverse_module_state->__pyx_n_s_col);
  Py_VISIT(traverse_module_state->__pyx_n_s_collections_abc);
  Py_VISIT(traverse_module_state->__pyx_n_s_complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_completeByConnected);
  Py_VISIT(traverse_module_state->__pyx_n_s_completeByConnectedConssAdjacenc);
  Py_VISIT(traverse_module_state->__pyx_n_s_completeGreedily);
  Py_VISIT(traverse_module_state->__pyx_n_s_comppartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_cons);
  Py_VISIT(traverse_module_state->__pyx_n_s_consIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_consclassesmaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_consclassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_consclassifiername);
  Py_VISIT(traverse_module_state->__pyx_n_s_consclassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_considerImplicits);
  Py_VISIT(traverse_module_state->__pyx_n_s_conspartitioncollection);
  Py_VISIT(traverse_module_state->__pyx_n_s_conspartitioncollection_element);
  Py_VISIT(traverse_module_state->__pyx_n_s_conspartitioncollection_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_conspatitionptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_conss);
  Py_VISIT(traverse_module_state->__pyx_n_s_consschanged);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_copyPartitionStatistics);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_ancestor);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_ancestor_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_block1_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_block2_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_block_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_blockrepid);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_candidates);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_candidatesNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_classificationtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_clocktime);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_comppartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_consclassesmaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_consindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_conspartitioncollection);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_dec_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_detailLevel);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_detectorchain_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_detectorchainindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_finished);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_firstblock_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_fromorig);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_ignoreDetectionLimits);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_nblocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_nblockscandidatescalctime);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_newlist);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_newvector);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_nnewblocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_otherdata);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_otherpartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_otherpartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_partialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_partialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_partition);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_pct);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_postprocessingtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_rep_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_repid);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_translatingtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_varclasseslinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_varclassesmaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_variables);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_varid);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_varindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_cpp_varpartitioncollection);
  Py_VISIT(traverse_module_state->__pyx_n_s_createConsPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_createConssAdjacency);
  Py_VISIT(traverse_module_state->__pyx_n_s_createDecomposition);
  Py_VISIT(traverse_module_state->__pyx_n_s_createDirectory);
  Py_VISIT(traverse_module_state->__pyx_n_s_createGcgCol);
  Py_VISIT(traverse_module_state->__pyx_n_s_createVarPart);
  Py_VISIT(traverse_module_state->__pyx_n_s_createscip);
  Py_VISIT(traverse_module_state->__pyx_n_s_dec);
  Py_VISIT(traverse_module_state->__pyx_n_u_dec);
  Py_VISIT(traverse_module_state->__pyx_n_s_dec_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_decchar);
  Py_VISIT(traverse_module_state->__pyx_n_s_decids);
  Py_VISIT(traverse_module_state->__pyx_n_s_decinfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_decomp);
  Py_VISIT(traverse_module_state->__pyx_n_s_decompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_decomps);
  Py_VISIT(traverse_module_state->__pyx_n_s_deleteEmptyBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_deleteOpencons);
  Py_VISIT(traverse_module_state->__pyx_n_s_deleteOpenvar);
  Py_VISIT(traverse_module_state->__pyx_n_s_desc);
  Py_VISIT(traverse_module_state->__pyx_n_s_det_prob_data);
  Py_VISIT(traverse_module_state->__pyx_n_s_detailLevel);
  Py_VISIT(traverse_module_state->__pyx_n_s_detect);
  Py_VISIT(traverse_module_state->__pyx_kp_u_detection_classification_varclas);
  Py_VISIT(traverse_module_state->__pyx_kp_u_detection_detectors_enabled);
  Py_VISIT(traverse_module_state->__pyx_kp_u_detection_detectors_finishingena);
  Py_VISIT(traverse_module_state->__pyx_kp_u_detection_detectors_postprocessi);
  Py_VISIT(traverse_module_state->__pyx_n_s_detector);
  Py_VISIT(traverse_module_state->__pyx_n_s_detector_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_detectorchain_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_detectorchainindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_detectorname);
  Py_VISIT(traverse_module_state->__pyx_n_s_detectors);
  Py_VISIT(traverse_module_state->__pyx_n_s_detprobdata);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_directory);
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
  Py_VISIT(traverse_module_state->__pyx_n_s_displayInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_dualsolconv);
  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
  Py_VISIT(traverse_module_state->__pyx_n_s_enabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_enabledfinishing);
  Py_VISIT(traverse_module_state->__pyx_n_s_enabledpostprocessing);
  Py_VISIT(traverse_module_state->__pyx_n_s_enter);
  Py_VISIT(traverse_module_state->__pyx_n_s_enumerate);
  Py_VISIT(traverse_module_state->__pyx_n_s_exactEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_exist_ok);
  Py_VISIT(traverse_module_state->__pyx_n_s_exit);
  Py_VISIT(traverse_module_state->__pyx_n_s_exitDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_exitSolution);
  Py_VISIT(traverse_module_state->__pyx_n_s_exitSolver);
  Py_VISIT(traverse_module_state->__pyx_kp_u_experimental_benders_score);
  Py_VISIT(traverse_module_state->__pyx_n_s_extension);
  Py_VISIT(traverse_module_state->__pyx_n_s_findVarsLinkingToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_findVarsLinkingToStairlinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_finishPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_finished);
  Py_VISIT(traverse_module_state->__pyx_n_s_firstblock_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConsToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConsToBlockId);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConsToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConssToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConssToBlockId);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixConssToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixVarToLinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixVarToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_fixVarToStairlinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_format);
  Py_VISIT(traverse_module_state->__pyx_n_s_freeConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_freeDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_freeSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_freeTemporaryData);
  Py_VISIT(traverse_module_state->__pyx_n_s_freeVarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_freqcallround);
  Py_VISIT(traverse_module_state->__pyx_n_s_freqcallroundoriginal);
  Py_VISIT(traverse_module_state->__pyx_n_s_fromorig);
  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
  Py_VISIT(traverse_module_state->__pyx_n_s_gcg_col);
  Py_VISIT(traverse_module_state->__pyx_n_s_get);
  Py_VISIT(traverse_module_state->__pyx_n_s_getAllSubsets);
  Py_VISIT(traverse_module_state->__pyx_n_s_getAncestorID);
  Py_VISIT(traverse_module_state->__pyx_n_s_getAncestorList);
  Py_VISIT(traverse_module_state->__pyx_n_s_getAncestorPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_getBlocksForRep);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassName);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassNameOfCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassNameOfVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassOfCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getClassOfVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConsPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConsPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConssForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConssForBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConssForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getConssForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetectorClockTime);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetectorClockTimes);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetectorchainInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetprobdata);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetprobdataOrig);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDetprobdataPresolved);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDualbound);
  Py_VISIT(traverse_module_state->__pyx_n_s_getFinishedByFinisher);
  Py_VISIT(traverse_module_state->__pyx_n_s_getFinishedPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_getFinishedPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getHashValue);
  Py_VISIT(traverse_module_state->__pyx_n_s_getID);
  Py_VISIT(traverse_module_state->__pyx_n_s_getIndexForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getIndexForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getLinkingvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getMasterProb);
  Py_VISIT(traverse_module_state->__pyx_n_s_getMasterconss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getMastervars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getModel);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNAncestorPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNAncestors);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNCoeffsForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNCoeffsForMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConsClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConsPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConssForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConssForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConssForVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNConssOfClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNDetectors);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNFinishedPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNLinkingvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNMasterconss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNMastervars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNNewBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNNewBlocksVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNNonzeros);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNOpenPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNOpenconss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNOpenvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNReps);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNStairlinkingvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNTotalStairlinkingvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarsForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarsForBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getNVarsOfClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_getName);
  Py_VISIT(traverse_module_state->__pyx_n_s_getOpenPartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_getOpenconss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getOpenvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getOrigVarsFixedZero);
  Py_VISIT(traverse_module_state->__pyx_n_s_getOrigvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPartDecompFromID);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssFromFree);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssFromFreeVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssToBlockVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssToBorder);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctConssToBorderVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsFromFree);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsFromFreeVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsToBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsToBlockVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsToBorder);
  Py_VISIT(traverse_module_state->__pyx_n_s_getPctVarsToBorderVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_getRelevantConss);
  Py_VISIT(traverse_module_state->__pyx_n_s_getRelevantVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_getRepForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getRepVarmap);
  Py_VISIT(traverse_module_state->__pyx_n_s_getScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_getSortedCandidatesNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_getStage);
  Py_VISIT(traverse_module_state->__pyx_n_s_getTranslatedpartialdecid);
  Py_VISIT(traverse_module_state->__pyx_n_s_getUsergiven);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_getValsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVarPartition);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVarPartitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVarProbindexForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVarsForBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_getVarsForCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasSetppMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasSetppcMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasSetppccardMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_heuristicEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_idx);
  Py_VISIT(traverse_module_state->__pyx_n_s_ignoreDetectionLimits);
  Py_VISIT(traverse_module_state->__pyx_n_s_import);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeDefaultPlugins);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_includePricingSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeVarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_initDetector);
  Py_VISIT(traverse_module_state->__pyx_n_s_initSolution);
  Py_VISIT(traverse_module_state->__pyx_n_s_initSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
  Py_VISIT(traverse_module_state->__pyx_n_s_isAssignedToOrigProb);
  Py_VISIT(traverse_module_state->__pyx_n_s_isComplete);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsCardinalityCons);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsClassified);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsMastercons);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsOpencons);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsSetpp);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConsSetppc);
  Py_VISIT(traverse_module_state->__pyx_n_s_isConssAdjInitialized);
  Py_VISIT(traverse_module_state->__pyx_n_s_isPartialdecDuplicateofFinished);
  Py_VISIT(traverse_module_state->__pyx_n_s_isTrivial);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarBlockvarOfBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarClassified);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarLinkingvar);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarMastervar);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarOpenvar);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarStairlinkingvar);
  Py_VISIT(traverse_module_state->__pyx_n_s_isVarStairlinkingvarOfBlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_enabled);
  Py_VISIT(traverse_module_state->__pyx_kp_u_is_not_supported_Only_svg_and_p);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_presolved);
  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_isray);
  Py_VISIT(traverse_module_state->__pyx_n_s_joinpath);
  Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
  Py_VISIT(traverse_module_state->__pyx_n_s_linking);
  Py_VISIT(traverse_module_state->__pyx_n_s_listConsClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_listDecompositions);
  Py_VISIT(traverse_module_state->__pyx_n_s_listDetectors);
  Py_VISIT(traverse_module_state->__pyx_n_s_listPricingSolvers);
  Py_VISIT(traverse_module_state->__pyx_n_s_listScores);
  Py_VISIT(traverse_module_state->__pyx_n_s_listVarClassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_lower);
  Py_VISIT(traverse_module_state->__pyx_n_u_lowerbound);
  Py_VISIT(traverse_module_state->__pyx_n_s_main);
  Py_VISIT(traverse_module_state->__pyx_n_s_master);
  Py_VISIT(traverse_module_state->__pyx_n_s_master_conss);
  Py_VISIT(traverse_module_state->__pyx_n_s_master_prob);
  Py_VISIT(traverse_module_state->__pyx_n_s_mastervars);
  Py_VISIT(traverse_module_state->__pyx_kp_u_maxForWhiteScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxForWhiteScore_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxNumberOfClasses);
  Py_VISIT(traverse_module_state->__pyx_kp_u_max_foreseeing_white);
  Py_VISIT(traverse_module_state->__pyx_kp_u_max_foreseeing_white_with_aggreg);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxcallround);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxcallroundoriginal);
  Py_VISIT(traverse_module_state->__pyx_n_s_mincallround);
  Py_VISIT(traverse_module_state->__pyx_n_s_mincallroundoriginal);
  Py_VISIT(traverse_module_state->__pyx_n_s_mkdir);
  Py_VISIT(traverse_module_state->__pyx_n_s_mp);
  Py_VISIT(traverse_module_state->__pyx_kp_u_nLinkingVars);
  Py_VISIT(traverse_module_state->__pyx_kp_u_nMasterConss);
  Py_VISIT(traverse_module_state->__pyx_kp_u_nMasterVars);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_consclassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_detectors);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_pricing_solvers);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_scores);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_varclassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_n_vars);
  Py_VISIT(traverse_module_state->__pyx_n_s_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_name_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_nblocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_nblockscandidatescalctime);
  Py_VISIT(traverse_module_state->__pyx_n_s_nclasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_ncons);
  Py_VISIT(traverse_module_state->__pyx_n_s_nconsparts);
  Py_VISIT(traverse_module_state->__pyx_n_s_new);
  Py_VISIT(traverse_module_state->__pyx_n_s_newlist);
  Py_VISIT(traverse_module_state->__pyx_n_u_newpartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_newvector);
  Py_VISIT(traverse_module_state->__pyx_n_s_nnewblocks);
  Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
  Py_VISIT(traverse_module_state->__pyx_n_s_npartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_nvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_nvotes);
  Py_VISIT(traverse_module_state->__pyx_n_s_only_master);
  Py_VISIT(traverse_module_state->__pyx_n_s_only_pricing);
  Py_VISIT(traverse_module_state->__pyx_n_s_optimize);
  Py_VISIT(traverse_module_state->__pyx_n_s_original);
  Py_VISIT(traverse_module_state->__pyx_n_s_originalvars);
  Py_VISIT(traverse_module_state->__pyx_n_s_otherdata);
  Py_VISIT(traverse_module_state->__pyx_n_s_otherpartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_otherpartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_otherpartialdecs_element);
  Py_VISIT(traverse_module_state->__pyx_n_s_otherpartialdecs_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_parents);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdecIsNoDuplicateOfPartial);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdecindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdecs_element);
  Py_VISIT(traverse_module_state->__pyx_n_s_partialdecs_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_partition);
  Py_VISIT(traverse_module_state->__pyx_n_s_partitionIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_pathlib);
  Py_VISIT(traverse_module_state->__pyx_n_s_pct);
  Py_VISIT(traverse_module_state->__pyx_n_s_pd);
  Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
  Py_VISIT(traverse_module_state->__pyx_n_u_png);
  Py_VISIT(traverse_module_state->__pyx_n_s_postprocessPartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_postprocessingtime);
  Py_VISIT(traverse_module_state->__pyx_kp_u_ppc_max_white);
  Py_VISIT(traverse_module_state->__pyx_kp_u_ppc_max_white_with_aggregation_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_prepare);
  Py_VISIT(traverse_module_state->__pyx_n_s_presolve);
  Py_VISIT(traverse_module_state->__pyx_n_s_presolved);
  Py_VISIT(traverse_module_state->__pyx_n_s_pricingSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_pricing_solver_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_pricing_solvers);
  Py_VISIT(traverse_module_state->__pyx_n_s_pricingprob);
  Py_VISIT(traverse_module_state->__pyx_kp_u_pricingsolver_exactenabled);
  Py_VISIT(traverse_module_state->__pyx_kp_u_pricingsolver_heurenabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_print);
  Py_VISIT(traverse_module_state->__pyx_n_s_printStatistics);
  Py_VISIT(traverse_module_state->__pyx_n_s_printVersion);
  Py_VISIT(traverse_module_state->__pyx_n_s_priority);
  Py_VISIT(traverse_module_state->__pyx_n_s_probnr);
  Py_VISIT(traverse_module_state->__pyx_n_s_propagatePartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_proxy);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyGCGCol);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyVar);
  Py_VISIT(traverse_module_state->__pyx_n_s_pygcgopt_gcg);
  Py_VISIT(traverse_module_state->__pyx_n_s_pygcgopt_util);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyscipopt_scip);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_checksum);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_result);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ConsClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_Detector);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PY_USERGIVEN);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_PricingSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_Score);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_VarClassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
  Py_VISIT(traverse_module_state->__pyx_n_s_r);
  Py_VISIT(traverse_module_state->__pyx_n_s_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_read_bytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_read_text);
  Py_VISIT(traverse_module_state->__pyx_n_s_redcost);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduceClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
  Py_VISIT(traverse_module_state->__pyx_n_s_refineToBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_refineToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_removeAncestorID);
  Py_VISIT(traverse_module_state->__pyx_n_s_removeEmptyClasses);
  Py_VISIT(traverse_module_state->__pyx_n_s_removeMastercons);
  Py_VISIT(traverse_module_state->__pyx_n_s_rep_id);
  Py_VISIT(traverse_module_state->__pyx_n_s_repid);
  Py_VISIT(traverse_module_state->__pyx_n_s_repr_png);
  Py_VISIT(traverse_module_state->__pyx_n_s_repr_svg);
  Py_VISIT(traverse_module_state->__pyx_n_s_result);
  Py_VISIT(traverse_module_state->__pyx_n_u_result);
  Py_VISIT(traverse_module_state->__pyx_n_s_row);
  Py_VISIT(traverse_module_state->__pyx_n_s_scip);
  Py_VISIT(traverse_module_state->__pyx_n_s_score);
  Py_VISIT(traverse_module_state->__pyx_n_s_scorecalculate);
  Py_VISIT(traverse_module_state->__pyx_n_s_scorefree);
  Py_VISIT(traverse_module_state->__pyx_n_s_scorename);
  Py_VISIT(traverse_module_state->__pyx_n_s_scores);
  Py_VISIT(traverse_module_state->__pyx_n_u_scorevalue);
  Py_VISIT(traverse_module_state->__pyx_n_s_self);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self__scip_self__valid_cannot_be);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self_consPartition_cannot_be_con);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self_gcg_col_cannot_be_converted);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self_thisptr_cannot_be_converted);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self_varPartition_cannot_be_conv);
  Py_VISIT(traverse_module_state->__pyx_n_s_setAncestorList);
  Py_VISIT(traverse_module_state->__pyx_n_s_setBoolParam);
  Py_VISIT(traverse_module_state->__pyx_n_s_setClassDecompInfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_setClassDescription);
  Py_VISIT(traverse_module_state->__pyx_n_s_setClassName);
  Py_VISIT(traverse_module_state->__pyx_n_s_setConsPartitionStatistics);
  Py_VISIT(traverse_module_state->__pyx_n_s_setConsToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorClockTimes);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorFinished);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorFinishedOrig);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorFinishingEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorPostprocessingEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setDetectorPropagated);
  Py_VISIT(traverse_module_state->__pyx_n_s_setFinishedByFinisher);
  Py_VISIT(traverse_module_state->__pyx_n_s_setFinishedByFinisherOrig);
  Py_VISIT(traverse_module_state->__pyx_n_s_setGCGSeparating);
  Py_VISIT(traverse_module_state->__pyx_n_s_setNBlocks);
  Py_VISIT(traverse_module_state->__pyx_n_s_setParamAggressive);
  Py_VISIT(traverse_module_state->__pyx_n_s_setParamDefault);
  Py_VISIT(traverse_module_state->__pyx_n_s_setParamFast);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctConssFromFreeVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctConssToBlockVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctConssToBorderVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctVarsFromFreeVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctVarsToBlockVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPctVarsToBorderVector);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPricingSolverEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPricingSolverExactEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPricingSolverHeuristicEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setStemsFromOrig);
  Py_VISIT(traverse_module_state->__pyx_n_s_setTranslatedpartialdecid);
  Py_VISIT(traverse_module_state->__pyx_n_s_setUsergiven);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarClassifierEnabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarPartitionStatistics);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarToBlockId);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarToLinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVarToStairlinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_setting);
  Py_VISIT(traverse_module_state->__pyx_n_s_shortname);
  Py_VISIT(traverse_module_state->__pyx_n_s_shouldCompletedByConsToMaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_showVisualization);
  Py_VISIT(traverse_module_state->__pyx_n_s_skip);
  Py_VISIT(traverse_module_state->__pyx_n_s_solve);
  Py_VISIT(traverse_module_state->__pyx_n_s_solveHeuristic);
  Py_VISIT(traverse_module_state->__pyx_n_s_solvername);
  Py_VISIT(traverse_module_state->__pyx_n_s_sort);
  Py_VISIT(traverse_module_state->__pyx_n_s_sortFinishedForScore);
  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_consclassifier_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_decomposition_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_detector_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_detprobdata_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_gcg_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_partition_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_pricing_solver_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_score_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_pygcgopt_varclassifier_pxi);
  Py_VISIT(traverse_module_state->__pyx_n_s_state);
  Py_VISIT(traverse_module_state->__pyx_n_u_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_str_conversion);
  Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
  Py_VISIT(traverse_module_state->__pyx_kp_u_strong_decomposition_score);
  Py_VISIT(traverse_module_state->__pyx_n_s_super);
  Py_VISIT(traverse_module_state->__pyx_n_u_svg);
  Py_VISIT(traverse_module_state->__pyx_n_s_tempfile);
  Py_VISIT(traverse_module_state->__pyx_n_s_test);
  Py_VISIT(traverse_module_state->__pyx_n_s_translatePartialdecs);
  Py_VISIT(traverse_module_state->__pyx_n_s_translatingtime);
  Py_VISIT(traverse_module_state->__pyx_n_s_typing);
  Py_VISIT(traverse_module_state->__pyx_n_s_update);
  Py_VISIT(traverse_module_state->__pyx_n_s_updateSolver);
  Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_usefulrecall);
  Py_VISIT(traverse_module_state->__pyx_n_s_v);
  Py_VISIT(traverse_module_state->__pyx_n_s_vals);
  Py_VISIT(traverse_module_state->__pyx_n_s_value);
  Py_VISIT(traverse_module_state->__pyx_n_s_var);
  Py_VISIT(traverse_module_state->__pyx_n_s_varIndex);
  Py_VISIT(traverse_module_state->__pyx_n_s_varbndschanged);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclasseslinking);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclassesmaster);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclassifier);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclassifier_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclassifiername);
  Py_VISIT(traverse_module_state->__pyx_n_s_varclassifiers);
  Py_VISIT(traverse_module_state->__pyx_n_s_variables);
  Py_VISIT(traverse_module_state->__pyx_n_s_varid);
  Py_VISIT(traverse_module_state->__pyx_n_s_varobjschanged);
  Py_VISIT(traverse_module_state->__pyx_n_s_varpartitioncollection);
  Py_VISIT(traverse_module_state->__pyx_n_s_varpartitioncollection_element);
  Py_VISIT(traverse_module_state->__pyx_n_s_varpartitioncollection_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_varpatitionptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_vars);
  Py_VISIT(traverse_module_state->__pyx_n_u_vis);
  Py_VISIT(traverse_module_state->__pyx_kp_u_vis_gp);
  Py_VISIT(traverse_module_state->__pyx_n_s_weakref);
  Py_VISIT(traverse_module_state->__pyx_n_s_with_suffix);
  Py_VISIT(traverse_module_state->__pyx_n_s_workonpartialdec);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeAllDecomps);
  Py_VISIT(traverse_module_state->__pyx_int_0);
  Py_VISIT(traverse_module_state->__pyx_int_1);
  Py_VISIT(traverse_module_state->__pyx_int_24087813);
  Py_VISIT(traverse_module_state->__pyx_int_37557029);
  Py_VISIT(traverse_module_state->__pyx_int_76513566);
  Py_VISIT(traverse_module_state->__pyx_int_104261058);
  Py_VISIT(traverse_module_state->__pyx_int_108959872);
  Py_VISIT(traverse_module_state->__pyx_int_128380825);
  Py_VISIT(traverse_module_state->__pyx_int_141772857);
  Py_VISIT(traverse_module_state->__pyx_int_160002037);
  Py_VISIT(traverse_module_state->__pyx_int_193403919);
  Py_VISIT(traverse_module_state->__pyx_int_222419149);
  Py_VISIT(traverse_module_state->__pyx_int_228825662);
  Py_VISIT(traverse_module_state->__pyx_int_229442799);
  Py_VISIT(traverse_module_state->__pyx_int_238750788);
  Py_VISIT(traverse_module_state->__pyx_int_248330301);
  Py_VISIT(traverse_module_state->__pyx_int_260020090);
  Py_VISIT(traverse_module_state->__pyx_k__10);
  Py_VISIT(traverse_module_state->__pyx_k__11);
  Py_VISIT(traverse_module_state->__pyx_tuple_);
  Py_VISIT(traverse_module_state->__pyx_tuple__2);
  Py_VISIT(traverse_module_state->__pyx_tuple__3);
  Py_VISIT(traverse_module_state->__pyx_tuple__4);
  Py_VISIT(traverse_module_state->__pyx_tuple__7);
  Py_VISIT(traverse_module_state->__pyx_tuple__9);
  Py_VISIT(traverse_module_state->__pyx_tuple__12);
  Py_VISIT(traverse_module_state->__pyx_tuple__13);
  Py_VISIT(traverse_module_state->__pyx_tuple__14);
  Py_VISIT(traverse_module_state->__pyx_tuple__15);
  Py_VISIT(traverse_module_state->__pyx_tuple__16);
  Py_VISIT(traverse_module_state->__pyx_tuple__17);
  Py_VISIT(traverse_module_state->__pyx_tuple__18);
  Py_VISIT(traverse_module_state->__pyx_tuple__19);
  Py_VISIT(traverse_module_state->__pyx_tuple__21);
  Py_VISIT(traverse_module_state->__pyx_tuple__25);
  Py_VISIT(traverse_module_state->__pyx_tuple__32);
  Py_VISIT(traverse_module_state->__pyx_tuple__34);
  Py_VISIT(traverse_module_state->__pyx_tuple__41);
  Py_VISIT(traverse_module_state->__pyx_tuple__43);
  Py_VISIT(traverse_module_state->__pyx_tuple__49);
  Py_VISIT(traverse_module_state->__pyx_tuple__53);
  Py_VISIT(traverse_module_state->__pyx_tuple__59);
  Py_VISIT(traverse_module_state->__pyx_tuple__61);
  Py_VISIT(traverse_module_state->__pyx_tuple__63);
  Py_VISIT(traverse_module_state->__pyx_tuple__65);
  Py_VISIT(traverse_module_state->__pyx_tuple__67);
  Py_VISIT(traverse_module_state->__pyx_tuple__70);
  Py_VISIT(traverse_module_state->__pyx_tuple__76);
  Py_VISIT(traverse_module_state->__pyx_tuple__78);
  Py_VISIT(traverse_module_state->__pyx_tuple__90);
  Py_VISIT(traverse_module_state->__pyx_tuple__92);
  Py_VISIT(traverse_module_state->__pyx_tuple__95);
  Py_VISIT(traverse_module_state->__pyx_tuple__107);
  Py_VISIT(traverse_module_state->__pyx_tuple__118);
  Py_VISIT(traverse_module_state->__pyx_tuple__120);
  Py_VISIT(traverse_module_state->__pyx_tuple__122);
  Py_VISIT(traverse_module_state->__pyx_tuple__124);
  Py_VISIT(traverse_module_state->__pyx_tuple__126);
  Py_VISIT(traverse_module_state->__pyx_tuple__128);
  Py_VISIT(traverse_module_state->__pyx_tuple__134);
  Py_VISIT(traverse_module_state->__pyx_tuple__137);
  Py_VISIT(traverse_module_state->__pyx_tuple__145);
  Py_VISIT(traverse_module_state->__pyx_tuple__147);
  Py_VISIT(traverse_module_state->__pyx_tuple__149);
  Py_VISIT(traverse_module_state->__pyx_tuple__152);
  Py_VISIT(traverse_module_state->__pyx_tuple__154);
  Py_VISIT(traverse_module_state->__pyx_tuple__156);
  Py_VISIT(traverse_module_state->__pyx_tuple__158);
  Py_VISIT(traverse_module_state->__pyx_tuple__163);
  Py_VISIT(traverse_module_state->__pyx_tuple__165);
  Py_VISIT(traverse_module_state->__pyx_tuple__167);
  Py_VISIT(traverse_module_state->__pyx_tuple__170);
  Py_VISIT(traverse_module_state->__pyx_tuple__172);
  Py_VISIT(traverse_module_state->__pyx_tuple__180);
  Py_VISIT(traverse_module_state->__pyx_tuple__183);
  Py_VISIT(traverse_module_state->__pyx_tuple__185);
  Py_VISIT(traverse_module_state->__pyx_tuple__192);
  Py_VISIT(traverse_module_state->__pyx_tuple__205);
  Py_VISIT(traverse_module_state->__pyx_tuple__219);
  Py_VISIT(traverse_module_state->__pyx_tuple__225);
  Py_VISIT(traverse_module_state->__pyx_tuple__227);
  Py_VISIT(traverse_module_state->__pyx_tuple__238);
  Py_VISIT(traverse_module_state->__pyx_tuple__242);
  Py_VISIT(traverse_module_state->__pyx_tuple__245);
  Py_VISIT(traverse_module_state->__pyx_tuple__247);
  Py_VISIT(traverse_module_state->__pyx_tuple__249);
  Py_VISIT(traverse_module_state->__pyx_tuple__251);
  Py_VISIT(traverse_module_state->__pyx_tuple__253);
  Py_VISIT(traverse_module_state->__pyx_tuple__255);
  Py_VISIT(traverse_module_state->__pyx_tuple__257);
  Py_VISIT(traverse_module_state->__pyx_tuple__260);
  Py_VISIT(traverse_module_state->__pyx_tuple__264);
  Py_VISIT(traverse_module_state->__pyx_tuple__269);
  Py_VISIT(traverse_module_state->__pyx_tuple__271);
  Py_VISIT(traverse_module_state->__pyx_tuple__273);
  Py_VISIT(traverse_module_state->__pyx_tuple__277);
  Py_VISIT(traverse_module_state->__pyx_tuple__286);
  Py_VISIT(traverse_module_state->__pyx_tuple__293);
  Py_VISIT(traverse_module_state->__pyx_tuple__296);
  Py_VISIT(traverse_module_state->__pyx_tuple__298);
  Py_VISIT(traverse_module_state->__pyx_tuple__300);
  Py_VISIT(traverse_module_state->__pyx_tuple__302);
  Py_VISIT(traverse_module_state->__pyx_tuple__306);
  Py_VISIT(traverse_module_state->__pyx_tuple__308);
  Py_VISIT(traverse_module_state->__pyx_tuple__311);
  Py_VISIT(traverse_module_state->__pyx_tuple__313);
  Py_VISIT(traverse_module_state->__pyx_tuple__315);
  Py_VISIT(traverse_module_state->__pyx_tuple__318);
  Py_VISIT(traverse_module_state->__pyx_tuple__321);
  Py_VISIT(traverse_module_state->__pyx_tuple__324);
  Py_VISIT(traverse_module_state->__pyx_tuple__327);
  Py_VISIT(traverse_module_state->__pyx_tuple__330);
  Py_VISIT(traverse_module_state->__pyx_tuple__332);
  Py_VISIT(traverse_module_state->__pyx_tuple__334);
  Py_VISIT(traverse_module_state->__pyx_tuple__336);
  Py_VISIT(traverse_module_state->__pyx_tuple__347);
  Py_VISIT(traverse_module_state->__pyx_tuple__349);
  Py_VISIT(traverse_module_state->__pyx_tuple__351);
  Py_VISIT(traverse_module_state->__pyx_tuple__353);
  Py_VISIT(traverse_module_state->__pyx_tuple__356);
  Py_VISIT(traverse_module_state->__pyx_tuple__362);
  Py_VISIT(traverse_module_state->__pyx_tuple__376);
  Py_VISIT(traverse_module_state->__pyx_tuple__378);
  Py_VISIT(traverse_module_state->__pyx_tuple__381);
  Py_VISIT(traverse_module_state->__pyx_tuple__383);
  Py_VISIT(traverse_module_state->__pyx_tuple__385);
  Py_VISIT(traverse_module_state->__pyx_tuple__398);
  Py_VISIT(traverse_module_state->__pyx_tuple__401);
  Py_VISIT(traverse_module_state->__pyx_tuple__406);
  Py_VISIT(traverse_module_state->__pyx_tuple__411);
  Py_VISIT(traverse_module_state->__pyx_tuple__424);
  Py_VISIT(traverse_module_state->__pyx_tuple__432);
  Py_VISIT(traverse_module_state->__pyx_tuple__435);
  Py_VISIT(traverse_module_state->__pyx_tuple__437);
  Py_VISIT(traverse_module_state->__pyx_tuple__439);
  Py_VISIT(traverse_module_state->__pyx_tuple__443);
  Py_VISIT(traverse_module_state->__pyx_tuple__445);
  Py_VISIT(traverse_module_state->__pyx_tuple__447);
  Py_VISIT(traverse_module_state->__pyx_tuple__448);
  Py_VISIT(traverse_module_state->__pyx_tuple__450);
  Py_VISIT(traverse_module_state->__pyx_tuple__452);
  Py_VISIT(traverse_module_state->__pyx_tuple__455);
  Py_VISIT(traverse_module_state->__pyx_tuple__457);
  Py_VISIT(traverse_module_state->__pyx_tuple__458);
  Py_VISIT(traverse_module_state->__pyx_tuple__460);
  Py_VISIT(traverse_module_state->__pyx_tuple__462);
  Py_VISIT(traverse_module_state->__pyx_tuple__464);
  Py_VISIT(traverse_module_state->__pyx_tuple__466);
  Py_VISIT(traverse_module_state->__pyx_tuple__468);
  Py_VISIT(traverse_module_state->__pyx_tuple__470);
  Py_VISIT(traverse_module_state->__pyx_tuple__472);
  Py_VISIT(traverse_module_state->__pyx_tuple__474);
  Py_VISIT(traverse_module_state->__pyx_tuple__476);
  Py_VISIT(traverse_module_state->__pyx_tuple__478);
  Py_VISIT(traverse_module_state->__pyx_tuple__482);
  Py_VISIT(traverse_module_state->__pyx_tuple__484);
  Py_VISIT(traverse_module_state->__pyx_tuple__486);
  Py_VISIT(traverse_module_state->__pyx_tuple__488);
  Py_VISIT(traverse_module_state->__pyx_tuple__489);
  Py_VISIT(traverse_module_state->__pyx_tuple__493);
  Py_VISIT(traverse_module_state->__pyx_tuple__497);
  Py_VISIT(traverse_module_state->__pyx_tuple__499);
  Py_VISIT(traverse_module_state->__pyx_tuple__505);
  Py_VISIT(traverse_module_state->__pyx_codeobj__22);
  Py_VISIT(traverse_module_state->__pyx_codeobj__23);
  Py_VISIT(traverse_module_state->__pyx_codeobj__24);
  Py_VISIT(traverse_module_state->__pyx_codeobj__26);
  Py_VISIT(traverse_module_state->__pyx_codeobj__27);
  Py_VISIT(traverse_module_state->__pyx_codeobj__28);
  Py_VISIT(traverse_module_state->__pyx_codeobj__29);
  Py_VISIT(traverse_module_state->__pyx_codeobj__30);
  Py_VISIT(traverse_module_state->__pyx_codeobj__31);
  Py_VISIT(traverse_module_state->__pyx_codeobj__33);
  Py_VISIT(traverse_module_state->__pyx_codeobj__35);
  Py_VISIT(traverse_module_state->__pyx_codeobj__36);
  Py_VISIT(traverse_module_state->__pyx_codeobj__37);
  Py_VISIT(traverse_module_state->__pyx_codeobj__38);
  Py_VISIT(traverse_module_state->__pyx_codeobj__39);
  Py_VISIT(traverse_module_state->__pyx_codeobj__40);
  Py_VISIT(traverse_module_state->__pyx_codeobj__42);
  Py_VISIT(traverse_module_state->__pyx_codeobj__44);
  Py_VISIT(traverse_module_state->__pyx_codeobj__45);
  Py_VISIT(traverse_module_state->__pyx_codeobj__46);
  Py_VISIT(traverse_module_state->__pyx_codeobj__47);
  Py_VISIT(traverse_module_state->__pyx_codeobj__48);
  Py_VISIT(traverse_module_state->__pyx_codeobj__50);
  Py_VISIT(traverse_module_state->__pyx_codeobj__51);
  Py_VISIT(traverse_module_state->__pyx_codeobj__52);
  Py_VISIT(traverse_module_state->__pyx_codeobj__54);
  Py_VISIT(traverse_module_state->__pyx_codeobj__55);
  Py_VISIT(traverse_module_state->__pyx_codeobj__56);
  Py_VISIT(traverse_module_state->__pyx_codeobj__57);
  Py_VISIT(traverse_module_state->__pyx_codeobj__58);
  Py_VISIT(traverse_module_state->__pyx_codeobj__60);
  Py_VISIT(traverse_module_state->__pyx_codeobj__62);
  Py_VISIT(traverse_module_state->__pyx_codeobj__64);
  Py_VISIT(traverse_module_state->__pyx_codeobj__66);
  Py_VISIT(traverse_module_state->__pyx_codeobj__68);
  Py_VISIT(traverse_module_state->__pyx_codeobj__69);
  Py_VISIT(traverse_module_state->__pyx_codeobj__71);
  Py_VISIT(traverse_module_state->__pyx_codeobj__72);
  Py_VISIT(traverse_module_state->__pyx_codeobj__73);
  Py_VISIT(traverse_module_state->__pyx_codeobj__74);
  Py_VISIT(traverse_module_state->__pyx_codeobj__75);
  Py_VISIT(traverse_module_state->__pyx_codeobj__77);
  Py_VISIT(traverse_module_state->__pyx_codeobj__79);
  Py_VISIT(traverse_module_state->__pyx_codeobj__80);
  Py_VISIT(traverse_module_state->__pyx_codeobj__81);
  Py_VISIT(traverse_module_state->__pyx_codeobj__82);
  Py_VISIT(traverse_module_state->__pyx_codeobj__83);
  Py_VISIT(traverse_module_state->__pyx_codeobj__84);
  Py_VISIT(traverse_module_state->__pyx_codeobj__85);
  Py_VISIT(traverse_module_state->__pyx_codeobj__86);
  Py_VISIT(traverse_module_state->__pyx_codeobj__87);
  Py_VISIT(traverse_module_state->__pyx_codeobj__88);
  Py_VISIT(traverse_module_state->__pyx_codeobj__89);
  Py_VISIT(traverse_module_state->__pyx_codeobj__91);
  Py_VISIT(traverse_module_state->__pyx_codeobj__93);
  Py_VISIT(traverse_module_state->__pyx_codeobj__94);
  Py_VISIT(traverse_module_state->__pyx_codeobj__96);
  Py_VISIT(traverse_module_state->__pyx_codeobj__97);
  Py_VISIT(traverse_module_state->__pyx_codeobj__98);
  Py_VISIT(traverse_module_state->__pyx_codeobj__99);
  Py_VISIT(traverse_module_state->__pyx_codeobj__100);
  Py_VISIT(traverse_module_state->__pyx_codeobj__101);
  Py_VISIT(traverse_module_state->__pyx_codeobj__102);
  Py_VISIT(traverse_module_state->__pyx_codeobj__103);
  Py_VISIT(traverse_module_state->__pyx_codeobj__104);
  Py_VISIT(traverse_module_state->__pyx_codeobj__105);
  Py_VISIT(traverse_module_state->__pyx_codeobj__106);
  Py_VISIT(traverse_module_state->__pyx_codeobj__108);
  Py_VISIT(traverse_module_state->__pyx_codeobj__109);
  Py_VISIT(traverse_module_state->__pyx_codeobj__110);
  Py_VISIT(traverse_module_state->__pyx_codeobj__111);
  Py_VISIT(traverse_module_state->__pyx_codeobj__112);
  Py_VISIT(traverse_module_state->__pyx_codeobj__113);
  Py_VISIT(traverse_module_state->__pyx_codeobj__114);
  Py_VISIT(traverse_module_state->__pyx_codeobj__115);
  Py_VISIT(traverse_module_state->__pyx_codeobj__116);
  Py_VISIT(traverse_module_state->__pyx_codeobj__117);
  Py_VISIT(traverse_module_state->__pyx_codeobj__119);
  Py_VISIT(traverse_module_state->__pyx_codeobj__121);
  Py_VISIT(traverse_module_state->__pyx_codeobj__123);
  Py_VISIT(traverse_module_state->__pyx_codeobj__125);
  Py_VISIT(traverse_module_state->__pyx_codeobj__127);
  Py_VISIT(traverse_module_state->__pyx_codeobj__129);
  Py_VISIT(traverse_module_state->__pyx_codeobj__130);
  Py_VISIT(traverse_module_state->__pyx_codeobj__131);
  Py_VISIT(traverse_module_state->__pyx_codeobj__132);
  Py_VISIT(traverse_module_state->__pyx_codeobj__133);
  Py_VISIT(traverse_module_state->__pyx_codeobj__135);
  Py_VISIT(traverse_module_state->__pyx_codeobj__136);
  Py_VISIT(traverse_module_state->__pyx_codeobj__138);
  Py_VISIT(traverse_module_state->__pyx_codeobj__139);
  Py_VISIT(traverse_module_state->__pyx_codeobj__140);
  Py_VISIT(traverse_module_state->__pyx_codeobj__141);
  Py_VISIT(traverse_module_state->__pyx_codeobj__142);
  Py_VISIT(traverse_module_state->__pyx_codeobj__143);
  Py_VISIT(traverse_module_state->__pyx_codeobj__144);
  Py_VISIT(traverse_module_state->__pyx_codeobj__146);
  Py_VISIT(traverse_module_state->__pyx_codeobj__148);
  Py_VISIT(traverse_module_state->__pyx_codeobj__150);
  Py_VISIT(traverse_module_state->__pyx_codeobj__151);
  Py_VISIT(traverse_module_state->__pyx_codeobj__153);
  Py_VISIT(traverse_module_state->__pyx_codeobj__155);
  Py_VISIT(traverse_module_state->__pyx_codeobj__157);
  Py_VISIT(traverse_module_state->__pyx_codeobj__159);
  Py_VISIT(traverse_module_state->__pyx_codeobj__160);
  Py_VISIT(traverse_module_state->__pyx_codeobj__161);
  Py_VISIT(traverse_module_state->__pyx_codeobj__162);
  Py_VISIT(traverse_module_state->__pyx_codeobj__164);
  Py_VISIT(traverse_module_state->__pyx_codeobj__166);
  Py_VISIT(traverse_module_state->__pyx_codeobj__168);
  Py_VISIT(traverse_module_state->__pyx_codeobj__169);
  Py_VISIT(traverse_module_state->__pyx_codeobj__171);
  Py_VISIT(traverse_module_state->__pyx_codeobj__173);
  Py_VISIT(traverse_module_state->__pyx_codeobj__174);
  Py_VISIT(traverse_module_state->__pyx_codeobj__175);
  Py_VISIT(traverse_module_state->__pyx_codeobj__176);
  Py_VISIT(traverse_module_state->__pyx_codeobj__177);
  Py_VISIT(traverse_module_state->__pyx_codeobj__178);
  Py_VISIT(traverse_module_state->__pyx_codeobj__179);
  Py_VISIT(traverse_module_state->__pyx_codeobj__181);
  Py_VISIT(traverse_module_state->__pyx_codeobj__182);
  Py_VISIT(traverse_module_state->__pyx_codeobj__184);
  Py_VISIT(traverse_module_state->__pyx_codeobj__186);
  Py_VISIT(traverse_module_state->__pyx_codeobj__187);
  Py_VISIT(traverse_module_state->__pyx_codeobj__188);
  Py_VISIT(traverse_module_state->__pyx_codeobj__189);
  Py_VISIT(traverse_module_state->__pyx_codeobj__190);
  Py_VISIT(traverse_module_state->__pyx_codeobj__191);
  Py_VISIT(traverse_module_state->__pyx_codeobj__193);
  Py_VISIT(traverse_module_state->__pyx_codeobj__194);
  Py_VISIT(traverse_module_state->__pyx_codeobj__195);
  Py_VISIT(traverse_module_state->__pyx_codeobj__196);
  Py_VISIT(traverse_module_state->__pyx_codeobj__197);
  Py_VISIT(traverse_module_state->__pyx_codeobj__198);
  Py_VISIT(traverse_module_state->__pyx_codeobj__199);
  Py_VISIT(traverse_module_state->__pyx_codeobj__200);
  Py_VISIT(traverse_module_state->__pyx_codeobj__201);
  Py_VISIT(traverse_module_state->__pyx_codeobj__202);
  Py_VISIT(traverse_module_state->__pyx_codeobj__203);
  Py_VISIT(traverse_module_state->__pyx_codeobj__204);
  Py_VISIT(traverse_module_state->__pyx_codeobj__206);
  Py_VISIT(traverse_module_state->__pyx_codeobj__207);
  Py_VISIT(traverse_module_state->__pyx_codeobj__208);
  Py_VISIT(traverse_module_state->__pyx_codeobj__209);
  Py_VISIT(traverse_module_state->__pyx_codeobj__210);
  Py_VISIT(traverse_module_state->__pyx_codeobj__211);
  Py_VISIT(traverse_module_state->__pyx_codeobj__212);
  Py_VISIT(traverse_module_state->__pyx_codeobj__213);
  Py_VISIT(traverse_module_state->__pyx_codeobj__214);
  Py_VISIT(traverse_module_state->__pyx_codeobj__215);
  Py_VISIT(traverse_module_state->__pyx_codeobj__216);
  Py_VISIT(traverse_module_state->__pyx_codeobj__217);
  Py_VISIT(traverse_module_state->__pyx_codeobj__218);
  Py_VISIT(traverse_module_state->__pyx_codeobj__220);
  Py_VISIT(traverse_module_state->__pyx_codeobj__221);
  Py_VISIT(traverse_module_state->__pyx_codeobj__222);
  Py_VISIT(traverse_module_state->__pyx_codeobj__223);
  Py_VISIT(traverse_module_state->__pyx_codeobj__224);
  Py_VISIT(traverse_module_state->__pyx_codeobj__226);
  Py_VISIT(traverse_module_state->__pyx_codeobj__228);
  Py_VISIT(traverse_module_state->__pyx_codeobj__229);
  Py_VISIT(traverse_module_state->__pyx_codeobj__230);
  Py_VISIT(traverse_module_state->__pyx_codeobj__231);
  Py_VISIT(traverse_module_state->__pyx_codeobj__232);
  Py_VISIT(traverse_module_state->__pyx_codeobj__233);
  Py_VISIT(traverse_module_state->__pyx_codeobj__234);
  Py_VISIT(traverse_module_state->__pyx_codeobj__235);
  Py_VISIT(traverse_module_state->__pyx_codeobj__236);
  Py_VISIT(traverse_module_state->__pyx_codeobj__237);
  Py_VISIT(traverse_module_state->__pyx_codeobj__239);
  Py_VISIT(traverse_module_state->__pyx_codeobj__240);
  Py_VISIT(traverse_module_state->__pyx_codeobj__241);
  Py_VISIT(traverse_module_state->__pyx_codeobj__243);
  Py_VISIT(traverse_module_state->__pyx_codeobj__244);
  Py_VISIT(traverse_module_state->__pyx_codeobj__246);
  Py_VISIT(traverse_module_state->__pyx_codeobj__248);
  Py_VISIT(traverse_module_state->__pyx_codeobj__250);
  Py_VISIT(traverse_module_state->__pyx_codeobj__252);
  Py_VISIT(traverse_module_state->__pyx_codeobj__254);
  Py_VISIT(traverse_module_state->__pyx_codeobj__256);
  Py_VISIT(traverse_module_state->__pyx_codeobj__258);
  Py_VISIT(traverse_module_state->__pyx_codeobj__259);
  Py_VISIT(traverse_module_state->__pyx_codeobj__261);
  Py_VISIT(traverse_module_state->__pyx_codeobj__262);
  Py_VISIT(traverse_module_state->__pyx_codeobj__263);
  Py_VISIT(traverse_module_state->__pyx_codeobj__265);
  Py_VISIT(traverse_module_state->__pyx_codeobj__266);
  Py_VISIT(traverse_module_state->__pyx_codeobj__267);
  Py_VISIT(traverse_module_state->__pyx_codeobj__268);
  Py_VISIT(traverse_module_state->__pyx_codeobj__270);
  Py_VISIT(traverse_module_state->__pyx_codeobj__272);
  Py_VISIT(traverse_module_state->__pyx_codeobj__274);
  Py_VISIT(traverse_module_state->__pyx_codeobj__275);
  Py_VISIT(traverse_module_state->__pyx_codeobj__276);
  Py_VISIT(traverse_module_state->__pyx_codeobj__278);
  Py_VISIT(traverse_module_state->__pyx_codeobj__279);
  Py_VISIT(traverse_module_state->__pyx_codeobj__280);
  Py_VISIT(traverse_module_state->__pyx_codeobj__281);
  Py_VISIT(traverse_module_state->__pyx_codeobj__282);
  Py_VISIT(traverse_module_state->__pyx_codeobj__283);
  Py_VISIT(traverse_module_state->__pyx_codeobj__284);
  Py_VISIT(traverse_module_state->__pyx_codeobj__285);
  Py_VISIT(traverse_module_state->__pyx_codeobj__287);
  Py_VISIT(traverse_module_state->__pyx_codeobj__288);
  Py_VISIT(traverse_module_state->__pyx_codeobj__289);
  Py_VISIT(traverse_module_state->__pyx_codeobj__290);
  Py_VISIT(traverse_module_state->__pyx_codeobj__291);
  Py_VISIT(traverse_module_state->__pyx_codeobj__292);
  Py_VISIT(traverse_module_state->__pyx_codeobj__294);
  Py_VISIT(traverse_module_state->__pyx_codeobj__295);
  Py_VISIT(traverse_module_state->__pyx_codeobj__297);
  Py_VISIT(traverse_module_state->__pyx_codeobj__299);
  Py_VISIT(traverse_module_state->__pyx_codeobj__301);
  Py_VISIT(traverse_module_state->__pyx_codeobj__303);
  Py_VISIT(traverse_module_state->__pyx_codeobj__304);
  Py_VISIT(traverse_module_state->__pyx_codeobj__305);
  Py_VISIT(traverse_module_state->__pyx_codeobj__307);
  Py_VISIT(traverse_module_state->__pyx_codeobj__309);
  Py_VISIT(traverse_module_state->__pyx_codeobj__310);
  Py_VISIT(traverse_module_state->__pyx_codeobj__312);
  Py_VISIT(traverse_module_state->__pyx_codeobj__314);
  Py_VISIT(traverse_module_state->__pyx_codeobj__316);
  Py_VISIT(traverse_module_state->__pyx_codeobj__317);
  Py_VISIT(traverse_module_state->__pyx_codeobj__319);
  Py_VISIT(traverse_module_state->__pyx_codeobj__320);
  Py_VISIT(traverse_module_state->__pyx_codeobj__322);
  Py_VISIT(traverse_module_state->__pyx_codeobj__323);
  Py_VISIT(traverse_module_state->__pyx_codeobj__325);
  Py_VISIT(traverse_module_state->__pyx_codeobj__326);
  Py_VISIT(traverse_module_state->__pyx_codeobj__328);
  Py_VISIT(traverse_module_state->__pyx_codeobj__329);
  Py_VISIT(traverse_module_state->__pyx_codeobj__331);
  Py_VISIT(traverse_module_state->__pyx_codeobj__333);
  Py_VISIT(traverse_module_state->__pyx_codeobj__335);
  Py_VISIT(traverse_module_state->__pyx_codeobj__337);
  Py_VISIT(traverse_module_state->__pyx_codeobj__338);
  Py_VISIT(traverse_module_state->__pyx_codeobj__339);
  Py_VISIT(traverse_module_state->__pyx_codeobj__340);
  Py_VISIT(traverse_module_state->__pyx_codeobj__341);
  Py_VISIT(traverse_module_state->__pyx_codeobj__342);
  Py_VISIT(traverse_module_state->__pyx_codeobj__343);
  Py_VISIT(traverse_module_state->__pyx_codeobj__344);
  Py_VISIT(traverse_module_state->__pyx_codeobj__345);
  Py_VISIT(traverse_module_state->__pyx_codeobj__346);
  Py_VISIT(traverse_module_state->__pyx_codeobj__348);
  Py_VISIT(traverse_module_state->__pyx_codeobj__350);
  Py_VISIT(traverse_module_state->__pyx_codeobj__352);
  Py_VISIT(traverse_module_state->__pyx_codeobj__354);
  Py_VISIT(traverse_module_state->__pyx_codeobj__355);
  Py_VISIT(traverse_module_state->__pyx_codeobj__357);
  Py_VISIT(traverse_module_state->__pyx_codeobj__358);
  Py_VISIT(traverse_module_state->__pyx_codeobj__359);
  Py_VISIT(traverse_module_state->__pyx_codeobj__360);
  Py_VISIT(traverse_module_state->__pyx_codeobj__361);
  Py_VISIT(traverse_module_state->__pyx_codeobj__363);
  Py_VISIT(traverse_module_state->__pyx_codeobj__364);
  Py_VISIT(traverse_module_state->__pyx_codeobj__365);
  Py_VISIT(traverse_module_state->__pyx_codeobj__366);
  Py_VISIT(traverse_module_state->__pyx_codeobj__367);
  Py_VISIT(traverse_module_state->__pyx_codeobj__368);
  Py_VISIT(traverse_module_state->__pyx_codeobj__369);
  Py_VISIT(traverse_module_state->__pyx_codeobj__370);
  Py_VISIT(traverse_module_state->__pyx_codeobj__371);
  Py_VISIT(traverse_module_state->__pyx_codeobj__372);
  Py_VISIT(traverse_module_state->__pyx_codeobj__373);
  Py_VISIT(traverse_module_state->__pyx_codeobj__374);
  Py_VISIT(traverse_module_state->__pyx_codeobj__375);
  Py_VISIT(traverse_module_state->__pyx_codeobj__377);
  Py_VISIT(traverse_module_state->__pyx_codeobj__379);
  Py_VISIT(traverse_module_state->__pyx_codeobj__380);
  Py_VISIT(traverse_module_state->__pyx_codeobj__382);
  Py_VISIT(traverse_module_state->__pyx_codeobj__384);
  Py_VISIT(traverse_module_state->__pyx_codeobj__386);
  Py_VISIT(traverse_module_state->__pyx_codeobj__387);
  Py_VISIT(traverse_module_state->__pyx_codeobj__388);
  Py_VISIT(traverse_module_state->__pyx_codeobj__389);
  Py_VISIT(traverse_module_state->__pyx_codeobj__390);
  Py_VISIT(traverse_module_state->__pyx_codeobj__391);
  Py_VISIT(traverse_module_state->__pyx_codeobj__392);
  Py_VISIT(traverse_module_state->__pyx_codeobj__393);
  Py_VISIT(traverse_module_state->__pyx_codeobj__394);
  Py_VISIT(traverse_module_state->__pyx_codeobj__395);
  Py_VISIT(traverse_module_state->__pyx_codeobj__396);
  Py_VISIT(traverse_module_state->__pyx_codeobj__397);
  Py_VISIT(traverse_module_state->__pyx_codeobj__399);
  Py_VISIT(traverse_module_state->__pyx_codeobj__400);
  Py_VISIT(traverse_module_state->__pyx_codeobj__402);
  Py_VISIT(traverse_module_state->__pyx_codeobj__403);
  Py_VISIT(traverse_module_state->__pyx_codeobj__404);
  Py_VISIT(traverse_module_state->__pyx_codeobj__405);
  Py_VISIT(traverse_module_state->__pyx_codeobj__407);
  Py_VISIT(traverse_module_state->__pyx_codeobj__408);
  Py_VISIT(traverse_module_state->__pyx_codeobj__409);
  Py_VISIT(traverse_module_state->__pyx_codeobj__410);
  Py_VISIT(traverse_module_state->__pyx_codeobj__412);
  Py_VISIT(traverse_module_state->__pyx_codeobj__413);
  Py_VISIT(traverse_module_state->__pyx_codeobj__414);
  Py_VISIT(traverse_module_state->__pyx_codeobj__415);
  Py_VISIT(traverse_module_state->__pyx_codeobj__416);
  Py_VISIT(traverse_module_state->__pyx_codeobj__417);
  Py_VISIT(traverse_module_state->__pyx_codeobj__418);
  Py_VISIT(traverse_module_state->__pyx_codeobj__419);
  Py_VISIT(traverse_module_state->__pyx_codeobj__420);
  Py_VISIT(traverse_module_state->__pyx_codeobj__421);
  Py_VISIT(traverse_module_state->__pyx_codeobj__422);
  Py_VISIT(traverse_module_state->__pyx_codeobj__423);
  Py_VISIT(traverse_module_state->__pyx_codeobj__425);
  Py_VISIT(traverse_module_state->__pyx_codeobj__426);
  Py_VISIT(traverse_module_state->__pyx_codeobj__427);
  Py_VISIT(traverse_module_state->__pyx_codeobj__428);
  Py_VISIT(traverse_module_state->__pyx_codeobj__429);
  Py_VISIT(traverse_module_state->__pyx_codeobj__430);
  Py_VISIT(traverse_module_state->__pyx_codeobj__431);
  Py_VISIT(traverse_module_state->__pyx_codeobj__433);
  Py_VISIT(traverse_module_state->__pyx_codeobj__434);
  Py_VISIT(traverse_module_state->__pyx_codeobj__436);
  Py_VISIT(traverse_module_state->__pyx_codeobj__438);
  Py_VISIT(traverse_module_state->__pyx_codeobj__440);
  Py_VISIT(traverse_module_state->__pyx_codeobj__441);
  Py_VISIT(traverse_module_state->__pyx_codeobj__442);
  Py_VISIT(traverse_module_state->__pyx_codeobj__444);
  Py_VISIT(traverse_module_state->__pyx_codeobj__446);
  Py_VISIT(traverse_module_state->__pyx_codeobj__449);
  Py_VISIT(traverse_module_state->__pyx_codeobj__451);
  Py_VISIT(traverse_module_state->__pyx_codeobj__453);
  Py_VISIT(traverse_module_state->__pyx_codeobj__454);
  Py_VISIT(traverse_module_state->__pyx_codeobj__456);
  Py_VISIT(traverse_module_state->__pyx_codeobj__459);
  Py_VISIT(traverse_module_state->__pyx_codeobj__461);
  Py_VISIT(traverse_module_state->__pyx_codeobj__463);
  Py_VISIT(traverse_module_state->__pyx_codeobj__465);
  Py_VISIT(traverse_module_state->__pyx_codeobj__467);
  Py_VISIT(traverse_module_state->__pyx_codeobj__469);
  Py_VISIT(traverse_module_state->__pyx_codeobj__471);
  Py_VISIT(traverse_module_state->__pyx_codeobj__473);
  Py_VISIT(traverse_module_state->__pyx_codeobj__475);
  Py_VISIT(traverse_module_state->__pyx_codeobj__477);
  Py_VISIT(traverse_module_state->__pyx_codeobj__479);
  Py_VISIT(traverse_module_state->__pyx_codeobj__480);
  Py_VISIT(traverse_module_state->__pyx_codeobj__481);
  Py_VISIT(traverse_module_state->__pyx_codeobj__483);
  Py_VISIT(traverse_module_state->__pyx_codeobj__485);
  Py_VISIT(traverse_module_state->__pyx_codeobj__487);
  Py_VISIT(traverse_module_state->__pyx_codeobj__490);
  Py_VISIT(traverse_module_state->__pyx_codeobj__491);
  Py_VISIT(traverse_module_state->__pyx_codeobj__492);
  Py_VISIT(traverse_module_state->__pyx_codeobj__494);
  Py_VISIT(traverse_module_state->__pyx_codeobj__495);
  Py_VISIT(traverse_module_state->__pyx_codeobj__496);
  Py_VISIT(traverse_module_state->__pyx_codeobj__498);
  Py_VISIT(traverse_module_state->__pyx_codeobj__500);
  Py_VISIT(traverse_module_state->__pyx_codeobj__501);
  Py_VISIT(traverse_module_state->__pyx_codeobj__502);
  Py_VISIT(traverse_module_state->__pyx_codeobj__503);
  Py_VISIT(traverse_module_state->__pyx_codeobj__504);
  Py_VISIT(traverse_module_state->__pyx_codeobj__506);
  Py_VISIT(traverse_module_state->__pyx_codeobj__507);
  Py_VISIT(traverse_module_state->__pyx_codeobj__508);
  Py_VISIT(traverse_module_state->__pyx_codeobj__509);
  Py_VISIT(traverse_module_state->__pyx_codeobj__510);
  Py_VISIT(traverse_module_state->__pyx_codeobj__511);
  Py_VISIT(traverse_module_state->__pyx_codeobj__512);
  Py_VISIT(traverse_module_state->__pyx_codeobj__513);
  Py_VISIT(traverse_module_state->__pyx_codeobj__514);
  return 0;
}
#endif
/* #### Code section: module_state_defines ### */
#define __pyx_d __pyx_mstate_global->__pyx_d
#define __pyx_b __pyx_mstate_global->__pyx_b
#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
#ifdef __Pyx_CyFunction_USED
#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
#endif
#ifdef __Pyx_FusedFunction_USED
#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
#endif
#ifdef __Pyx_Generator_USED
#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
#endif
#ifdef __Pyx_IterableCoroutine_USED
#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_9pyscipopt_4scip_Expr __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Expr
#define __pyx_ptype_9pyscipopt_4scip_Event __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Event
#define __pyx_ptype_9pyscipopt_4scip_Column __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Column
#define __pyx_ptype_9pyscipopt_4scip_Row __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Row
#define __pyx_ptype_9pyscipopt_4scip_NLRow __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_NLRow
#define __pyx_ptype_9pyscipopt_4scip_Solution __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Solution
#define __pyx_ptype_9pyscipopt_4scip_DomainChanges __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_DomainChanges
#define __pyx_ptype_9pyscipopt_4scip_BoundChange __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_BoundChange
#define __pyx_ptype_9pyscipopt_4scip_Node __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Node
#define __pyx_ptype_9pyscipopt_4scip_Variable __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Variable
#define __pyx_ptype_9pyscipopt_4scip_Constraint __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Constraint
#define __pyx_ptype_9pyscipopt_4scip_Model __pyx_mstate_global->__pyx_ptype_9pyscipopt_4scip_Model
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_7cpython_4bool_bool __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_7cpython_7complex_complex __pyx_mstate_global->__pyx_ptype_7cpython_7complex_complex
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#define __pyx_type_8pygcgopt_3gcg_DetProbData __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_DetProbData
#define __pyx_type_8pygcgopt_3gcg_ConsPart __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_ConsPart
#define __pyx_type_8pygcgopt_3gcg_VarPart __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_VarPart
#define __pyx_type_8pygcgopt_3gcg_GCGColumn __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_GCGColumn
#define __pyx_type_8pygcgopt_3gcg_Detector __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_Detector
#define __pyx_type_8pygcgopt_3gcg_PricingSolver __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PricingSolver
#define __pyx_type_8pygcgopt_3gcg_Score __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_Score
#define __pyx_type_8pygcgopt_3gcg_PartialDecomposition __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PartialDecomposition
#define __pyx_type_8pygcgopt_3gcg_ConsClassifier __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_ConsClassifier
#define __pyx_type_8pygcgopt_3gcg_VarClassifier __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_VarClassifier
#define __pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS
#define __pyx_type_8pygcgopt_3gcg_PY_USERGIVEN __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN
#define __pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO
#define __pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO
#define __pyx_type_8pygcgopt_3gcg_Model __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_Model
#define __pyx_type_8pygcgopt_3gcg_GCGPricingModel __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_GCGPricingModel
#define __pyx_type_8pygcgopt_3gcg_GCGMasterModel __pyx_mstate_global->__pyx_type_8pygcgopt_3gcg_GCGMasterModel
#endif
#define __pyx_ptype_8pygcgopt_3gcg_DetProbData __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_DetProbData
#define __pyx_ptype_8pygcgopt_3gcg_ConsPart __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_ConsPart
#define __pyx_ptype_8pygcgopt_3gcg_VarPart __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_VarPart
#define __pyx_ptype_8pygcgopt_3gcg_GCGColumn __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_GCGColumn
#define __pyx_ptype_8pygcgopt_3gcg_Detector __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_Detector
#define __pyx_ptype_8pygcgopt_3gcg_PricingSolver __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PricingSolver
#define __pyx_ptype_8pygcgopt_3gcg_Score __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_Score
#define __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition
#define __pyx_ptype_8pygcgopt_3gcg_ConsClassifier __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_ConsClassifier
#define __pyx_ptype_8pygcgopt_3gcg_VarClassifier __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_VarClassifier
#define __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS
#define __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN
#define __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO
#define __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO
#define __pyx_ptype_8pygcgopt_3gcg_Model __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_Model
#define __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel
#define __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel __pyx_mstate_global->__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel
#define __pyx_n_s_ConsClassifier __pyx_mstate_global->__pyx_n_s_ConsClassifier
#define __pyx_n_s_ConsClassifier___reduce_cython __pyx_mstate_global->__pyx_n_s_ConsClassifier___reduce_cython
#define __pyx_n_s_ConsClassifier___setstate_cython __pyx_mstate_global->__pyx_n_s_ConsClassifier___setstate_cython
#define __pyx_n_s_ConsClassifier_classify __pyx_mstate_global->__pyx_n_s_ConsClassifier_classify
#define __pyx_n_s_ConsClassifier_freeConsClassifie __pyx_mstate_global->__pyx_n_s_ConsClassifier_freeConsClassifie
#define __pyx_n_s_ConsPart __pyx_mstate_global->__pyx_n_s_ConsPart
#define __pyx_n_s_ConsPart___reduce_cython __pyx_mstate_global->__pyx_n_s_ConsPart___reduce_cython
#define __pyx_n_s_ConsPart___setstate_cython __pyx_mstate_global->__pyx_n_s_ConsPart___setstate_cython
#define __pyx_n_s_ConsPart_addClass __pyx_mstate_global->__pyx_n_s_ConsPart_addClass
#define __pyx_n_s_ConsPart_assignConsToClass __pyx_mstate_global->__pyx_n_s_ConsPart_assignConsToClass
#define __pyx_n_s_ConsPart_getAllSubsets __pyx_mstate_global->__pyx_n_s_ConsPart_getAllSubsets
#define __pyx_n_s_ConsPart_getClassDecompInfo __pyx_mstate_global->__pyx_n_s_ConsPart_getClassDecompInfo
#define __pyx_n_s_ConsPart_getClassDescription __pyx_mstate_global->__pyx_n_s_ConsPart_getClassDescription
#define __pyx_n_s_ConsPart_getClassName __pyx_mstate_global->__pyx_n_s_ConsPart_getClassName
#define __pyx_n_s_ConsPart_getClassNameOfCons __pyx_mstate_global->__pyx_n_s_ConsPart_getClassNameOfCons
#define __pyx_n_s_ConsPart_getClassOfCons __pyx_mstate_global->__pyx_n_s_ConsPart_getClassOfCons
#define __pyx_n_s_ConsPart_getNClasses __pyx_mstate_global->__pyx_n_s_ConsPart_getNClasses
#define __pyx_n_s_ConsPart_getNConss __pyx_mstate_global->__pyx_n_s_ConsPart_getNConss
#define __pyx_n_s_ConsPart_getNConssOfClasses __pyx_mstate_global->__pyx_n_s_ConsPart_getNConssOfClasses
#define __pyx_n_s_ConsPart_getName __pyx_mstate_global->__pyx_n_s_ConsPart_getName
#define __pyx_n_s_ConsPart_isConsClassified __pyx_mstate_global->__pyx_n_s_ConsPart_isConsClassified
#define __pyx_n_s_ConsPart_reduceClasses __pyx_mstate_global->__pyx_n_s_ConsPart_reduceClasses
#define __pyx_n_s_ConsPart_removeEmptyClasses __pyx_mstate_global->__pyx_n_s_ConsPart_removeEmptyClasses
#define __pyx_n_s_ConsPart_setClassDecompInfo __pyx_mstate_global->__pyx_n_s_ConsPart_setClassDecompInfo
#define __pyx_n_s_ConsPart_setClassDescription __pyx_mstate_global->__pyx_n_s_ConsPart_setClassDescription
#define __pyx_n_s_ConsPart_setClassName __pyx_mstate_global->__pyx_n_s_ConsPart_setClassName
#define __pyx_kp_u_Consclassifier_0_yields_a_classi __pyx_mstate_global->__pyx_kp_u_Consclassifier_0_yields_a_classi
#define __pyx_n_s_DetProbData __pyx_mstate_global->__pyx_n_s_DetProbData
#define __pyx_n_s_DetProbData___reduce_cython __pyx_mstate_global->__pyx_n_s_DetProbData___reduce_cython
#define __pyx_n_s_DetProbData___setstate_cython __pyx_mstate_global->__pyx_n_s_DetProbData___setstate_cython
#define __pyx_n_s_DetProbData_addCandidatesNBlocks __pyx_mstate_global->__pyx_n_s_DetProbData_addCandidatesNBlocks
#define __pyx_n_s_DetProbData_addConsPartition __pyx_mstate_global->__pyx_n_s_DetProbData_addConsPartition
#define __pyx_n_s_DetProbData_addPartialdecToAnces __pyx_mstate_global->__pyx_n_s_DetProbData_addPartialdecToAnces
#define __pyx_n_s_DetProbData_addPartialdecToFinis __pyx_mstate_global->__pyx_n_s_DetProbData_addPartialdecToFinis
#define __pyx_n_s_DetProbData_addPartialdecToFinis_2 __pyx_mstate_global->__pyx_n_s_DetProbData_addPartialdecToFinis_2
#define __pyx_n_s_DetProbData_addPartialdecToOpen __pyx_mstate_global->__pyx_n_s_DetProbData_addPartialdecToOpen
#define __pyx_n_s_DetProbData_addVarPartition __pyx_mstate_global->__pyx_n_s_DetProbData_addVarPartition
#define __pyx_n_s_DetProbData_candidatesNBlocks __pyx_mstate_global->__pyx_n_s_DetProbData_candidatesNBlocks
#define __pyx_n_s_DetProbData_classificationtime __pyx_mstate_global->__pyx_n_s_DetProbData_classificationtime
#define __pyx_n_s_DetProbData_clearAncestorPartial __pyx_mstate_global->__pyx_n_s_DetProbData_clearAncestorPartial
#define __pyx_n_s_DetProbData_clearCurrentPartiald __pyx_mstate_global->__pyx_n_s_DetProbData_clearCurrentPartiald
#define __pyx_n_s_DetProbData_clearFinishedPartial __pyx_mstate_global->__pyx_n_s_DetProbData_clearFinishedPartial
#define __pyx_n_s_DetProbData_conspartitioncollect __pyx_mstate_global->__pyx_n_s_DetProbData_conspartitioncollect
#define __pyx_n_s_DetProbData_createConsPart __pyx_mstate_global->__pyx_n_s_DetProbData_createConsPart
#define __pyx_n_s_DetProbData_createConssAdjacency __pyx_mstate_global->__pyx_n_s_DetProbData_createConssAdjacency
#define __pyx_n_s_DetProbData_createVarPart __pyx_mstate_global->__pyx_n_s_DetProbData_createVarPart
#define __pyx_n_s_DetProbData_freeTemporaryData __pyx_mstate_global->__pyx_n_s_DetProbData_freeTemporaryData
#define __pyx_n_s_DetProbData_getAncestorPartialde __pyx_mstate_global->__pyx_n_s_DetProbData_getAncestorPartialde
#define __pyx_n_s_DetProbData_getCons __pyx_mstate_global->__pyx_n_s_DetProbData_getCons
#define __pyx_n_s_DetProbData_getConsPartition __pyx_mstate_global->__pyx_n_s_DetProbData_getConsPartition
#define __pyx_n_s_DetProbData_getConsPartitions __pyx_mstate_global->__pyx_n_s_DetProbData_getConsPartitions
#define __pyx_n_s_DetProbData_getConssForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getConssForCons
#define __pyx_n_s_DetProbData_getConssForVar __pyx_mstate_global->__pyx_n_s_DetProbData_getConssForVar
#define __pyx_n_s_DetProbData_getFinishedPartialde __pyx_mstate_global->__pyx_n_s_DetProbData_getFinishedPartialde
#define __pyx_n_s_DetProbData_getFinishedPartialde_2 __pyx_mstate_global->__pyx_n_s_DetProbData_getFinishedPartialde_2
#define __pyx_n_s_DetProbData_getIndexForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getIndexForCons
#define __pyx_n_s_DetProbData_getIndexForVar __pyx_mstate_global->__pyx_n_s_DetProbData_getIndexForVar
#define __pyx_n_s_DetProbData_getModel __pyx_mstate_global->__pyx_n_s_DetProbData_getModel
#define __pyx_n_s_DetProbData_getNAncestorPartiald __pyx_mstate_global->__pyx_n_s_DetProbData_getNAncestorPartiald
#define __pyx_n_s_DetProbData_getNConsPartitions __pyx_mstate_global->__pyx_n_s_DetProbData_getNConsPartitions
#define __pyx_n_s_DetProbData_getNConss __pyx_mstate_global->__pyx_n_s_DetProbData_getNConss
#define __pyx_n_s_DetProbData_getNConssForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getNConssForCons
#define __pyx_n_s_DetProbData_getNConssForVar __pyx_mstate_global->__pyx_n_s_DetProbData_getNConssForVar
#define __pyx_n_s_DetProbData_getNFinishedPartiald __pyx_mstate_global->__pyx_n_s_DetProbData_getNFinishedPartiald
#define __pyx_n_s_DetProbData_getNNonzeros __pyx_mstate_global->__pyx_n_s_DetProbData_getNNonzeros
#define __pyx_n_s_DetProbData_getNOpenPartialdecs __pyx_mstate_global->__pyx_n_s_DetProbData_getNOpenPartialdecs
#define __pyx_n_s_DetProbData_getNPartialdecs __pyx_mstate_global->__pyx_n_s_DetProbData_getNPartialdecs
#define __pyx_n_s_DetProbData_getNVarPartitions __pyx_mstate_global->__pyx_n_s_DetProbData_getNVarPartitions
#define __pyx_n_s_DetProbData_getNVars __pyx_mstate_global->__pyx_n_s_DetProbData_getNVars
#define __pyx_n_s_DetProbData_getNVarsForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getNVarsForCons
#define __pyx_n_s_DetProbData_getOpenPartialdecs __pyx_mstate_global->__pyx_n_s_DetProbData_getOpenPartialdecs
#define __pyx_n_s_DetProbData_getOrigVarsFixedZero __pyx_mstate_global->__pyx_n_s_DetProbData_getOrigVarsFixedZero
#define __pyx_n_s_DetProbData_getRelevantConss __pyx_mstate_global->__pyx_n_s_DetProbData_getRelevantConss
#define __pyx_n_s_DetProbData_getRelevantVars __pyx_mstate_global->__pyx_n_s_DetProbData_getRelevantVars
#define __pyx_n_s_DetProbData_getSortedCandidatesN __pyx_mstate_global->__pyx_n_s_DetProbData_getSortedCandidatesN
#define __pyx_n_s_DetProbData_getVal __pyx_mstate_global->__pyx_n_s_DetProbData_getVal
#define __pyx_n_s_DetProbData_getValsForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getValsForCons
#define __pyx_n_s_DetProbData_getVar __pyx_mstate_global->__pyx_n_s_DetProbData_getVar
#define __pyx_n_s_DetProbData_getVarPartition __pyx_mstate_global->__pyx_n_s_DetProbData_getVarPartition
#define __pyx_n_s_DetProbData_getVarPartitions __pyx_mstate_global->__pyx_n_s_DetProbData_getVarPartitions
#define __pyx_n_s_DetProbData_getVarsForCons __pyx_mstate_global->__pyx_n_s_DetProbData_getVarsForCons
#define __pyx_n_s_DetProbData_isAssignedToOrigProb __pyx_mstate_global->__pyx_n_s_DetProbData_isAssignedToOrigProb
#define __pyx_n_s_DetProbData_isConsCardinalityCon __pyx_mstate_global->__pyx_n_s_DetProbData_isConsCardinalityCon
#define __pyx_n_s_DetProbData_isConsSetpp __pyx_mstate_global->__pyx_n_s_DetProbData_isConsSetpp
#define __pyx_n_s_DetProbData_isConsSetppc __pyx_mstate_global->__pyx_n_s_DetProbData_isConsSetppc
#define __pyx_n_s_DetProbData_isConssAdjInitialize __pyx_mstate_global->__pyx_n_s_DetProbData_isConssAdjInitialize
#define __pyx_n_s_DetProbData_isPartialdecDuplicat __pyx_mstate_global->__pyx_n_s_DetProbData_isPartialdecDuplicat
#define __pyx_n_s_DetProbData_nblockscandidatescal __pyx_mstate_global->__pyx_n_s_DetProbData_nblockscandidatescal
#define __pyx_n_s_DetProbData_partialdecIsNoDuplic __pyx_mstate_global->__pyx_n_s_DetProbData_partialdecIsNoDuplic
#define __pyx_n_s_DetProbData_postprocessingtime __pyx_mstate_global->__pyx_n_s_DetProbData_postprocessingtime
#define __pyx_n_s_DetProbData_sortFinishedForScore __pyx_mstate_global->__pyx_n_s_DetProbData_sortFinishedForScore
#define __pyx_n_s_DetProbData_translatePartialdecs __pyx_mstate_global->__pyx_n_s_DetProbData_translatePartialdecs
#define __pyx_n_s_DetProbData_translatingtime __pyx_mstate_global->__pyx_n_s_DetProbData_translatingtime
#define __pyx_n_s_DetProbData_varpartitioncollecti __pyx_mstate_global->__pyx_n_s_DetProbData_varpartitioncollecti
#define __pyx_n_s_Detector __pyx_mstate_global->__pyx_n_s_Detector
#define __pyx_n_s_Detector___reduce_cython __pyx_mstate_global->__pyx_n_s_Detector___reduce_cython
#define __pyx_n_s_Detector___setstate_cython __pyx_mstate_global->__pyx_n_s_Detector___setstate_cython
#define __pyx_kp_u_Detector_callback_returned_of_ty __pyx_mstate_global->__pyx_kp_u_Detector_callback_returned_of_ty
#define __pyx_n_s_Detector_exitDetector __pyx_mstate_global->__pyx_n_s_Detector_exitDetector
#define __pyx_n_s_Detector_finishPartialdec __pyx_mstate_global->__pyx_n_s_Detector_finishPartialdec
#define __pyx_n_s_Detector_freeDetector __pyx_mstate_global->__pyx_n_s_Detector_freeDetector
#define __pyx_n_s_Detector_initDetector __pyx_mstate_global->__pyx_n_s_Detector_initDetector
#define __pyx_n_s_Detector_postprocessPartialdec __pyx_mstate_global->__pyx_n_s_Detector_postprocessPartialdec
#define __pyx_n_s_Detector_propagatePartialdec __pyx_mstate_global->__pyx_n_s_Detector_propagatePartialdec
#define __pyx_n_s_Detector_setParamAggressive __pyx_mstate_global->__pyx_n_s_Detector_setParamAggressive
#define __pyx_n_s_Detector_setParamDefault __pyx_mstate_global->__pyx_n_s_Detector_setParamDefault
#define __pyx_n_s_Detector_setParamFast __pyx_mstate_global->__pyx_n_s_Detector_setParamFast
#define __pyx_kp_u_Expected_iterable_as_first_argum __pyx_mstate_global->__pyx_kp_u_Expected_iterable_as_first_argum
#define __pyx_kp_u_Format __pyx_mstate_global->__pyx_kp_u_Format
#define __pyx_n_s_GCGColumn __pyx_mstate_global->__pyx_n_s_GCGColumn
#define __pyx_n_s_GCGColumn___reduce_cython __pyx_mstate_global->__pyx_n_s_GCGColumn___reduce_cython
#define __pyx_n_s_GCGColumn___setstate_cython __pyx_mstate_global->__pyx_n_s_GCGColumn___setstate_cython
#define __pyx_n_s_GCGMasterModel __pyx_mstate_global->__pyx_n_s_GCGMasterModel
#define __pyx_n_s_GCGMasterModel___reduce_cython __pyx_mstate_global->__pyx_n_s_GCGMasterModel___reduce_cython
#define __pyx_n_s_GCGMasterModel___setstate_cython __pyx_mstate_global->__pyx_n_s_GCGMasterModel___setstate_cython
#define __pyx_n_s_GCGMasterModel_addCol __pyx_mstate_global->__pyx_n_s_GCGMasterModel_addCol
#define __pyx_n_s_GCGMasterModel_getOrigvars __pyx_mstate_global->__pyx_n_s_GCGMasterModel_getOrigvars
#define __pyx_n_s_GCGPricingModel __pyx_mstate_global->__pyx_n_s_GCGPricingModel
#define __pyx_n_s_GCGPricingModel___reduce_cython __pyx_mstate_global->__pyx_n_s_GCGPricingModel___reduce_cython
#define __pyx_n_s_GCGPricingModel___setstate_cytho __pyx_mstate_global->__pyx_n_s_GCGPricingModel___setstate_cytho
#define __pyx_n_s_GCGPricingModel_createGcgCol __pyx_mstate_global->__pyx_n_s_GCGPricingModel_createGcgCol
#define __pyx_n_s_INFEASIBLE __pyx_mstate_global->__pyx_n_s_INFEASIBLE
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4
#define __pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5 __pyx_mstate_global->__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5
#define __pyx_n_s_Iterable __pyx_mstate_global->__pyx_n_s_Iterable
#define __pyx_kp_u_Length_of_value_for_decchar_must __pyx_mstate_global->__pyx_kp_u_Length_of_value_for_decchar_must
#define __pyx_n_s_List __pyx_mstate_global->__pyx_n_s_List
#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
#define __pyx_n_s_Model __pyx_mstate_global->__pyx_n_s_Model
#define __pyx_n_s_Model___reduce_cython __pyx_mstate_global->__pyx_n_s_Model___reduce_cython
#define __pyx_n_s_Model___setstate_cython __pyx_mstate_global->__pyx_n_s_Model___setstate_cython
#define __pyx_n_s_Model_addDecomposition __pyx_mstate_global->__pyx_n_s_Model_addDecomposition
#define __pyx_n_s_Model_addDecompositionFromConss __pyx_mstate_global->__pyx_n_s_Model_addDecompositionFromConss
#define __pyx_n_s_Model_addPreexistingPartialDecom __pyx_mstate_global->__pyx_n_s_Model_addPreexistingPartialDecom
#define __pyx_n_s_Model_addVar __pyx_mstate_global->__pyx_n_s_Model_addVar
#define __pyx_n_s_Model_createDecomposition __pyx_mstate_global->__pyx_n_s_Model_createDecomposition
#define __pyx_n_s_Model_detect __pyx_mstate_global->__pyx_n_s_Model_detect
#define __pyx_n_s_Model_getDetprobdataOrig __pyx_mstate_global->__pyx_n_s_Model_getDetprobdataOrig
#define __pyx_n_s_Model_getDetprobdataPresolved __pyx_mstate_global->__pyx_n_s_Model_getDetprobdataPresolved
#define __pyx_n_s_Model_getDualbound __pyx_mstate_global->__pyx_n_s_Model_getDualbound
#define __pyx_n_s_Model_getMasterProb __pyx_mstate_global->__pyx_n_s_Model_getMasterProb
#define __pyx_n_s_Model_getMastervars __pyx_mstate_global->__pyx_n_s_Model_getMastervars
#define __pyx_n_s_Model_getNConsClassifiers __pyx_mstate_global->__pyx_n_s_Model_getNConsClassifiers
#define __pyx_n_s_Model_getNVarClassifiers __pyx_mstate_global->__pyx_n_s_Model_getNVarClassifiers
#define __pyx_n_s_Model_getPartDecompFromID __pyx_mstate_global->__pyx_n_s_Model_getPartDecompFromID
#define __pyx_n_s_Model_includeConsClassifier __pyx_mstate_global->__pyx_n_s_Model_includeConsClassifier
#define __pyx_n_s_Model_includeDefaultPlugins __pyx_mstate_global->__pyx_n_s_Model_includeDefaultPlugins
#define __pyx_n_s_Model_includeDetector __pyx_mstate_global->__pyx_n_s_Model_includeDetector
#define __pyx_n_s_Model_includePricingSolver __pyx_mstate_global->__pyx_n_s_Model_includePricingSolver
#define __pyx_n_s_Model_includeScore __pyx_mstate_global->__pyx_n_s_Model_includeScore
#define __pyx_n_s_Model_includeVarClassifier __pyx_mstate_global->__pyx_n_s_Model_includeVarClassifier
#define __pyx_n_s_Model_listConsClassifiers __pyx_mstate_global->__pyx_n_s_Model_listConsClassifiers
#define __pyx_n_s_Model_listDecompositions __pyx_mstate_global->__pyx_n_s_Model_listDecompositions
#define __pyx_n_s_Model_listDetectors __pyx_mstate_global->__pyx_n_s_Model_listDetectors
#define __pyx_n_s_Model_listPricingSolvers __pyx_mstate_global->__pyx_n_s_Model_listPricingSolvers
#define __pyx_n_s_Model_listScores __pyx_mstate_global->__pyx_n_s_Model_listScores
#define __pyx_n_s_Model_listVarClassifiers __pyx_mstate_global->__pyx_n_s_Model_listVarClassifiers
#define __pyx_n_s_Model_optimize __pyx_mstate_global->__pyx_n_s_Model_optimize
#define __pyx_n_s_Model_presolve __pyx_mstate_global->__pyx_n_s_Model_presolve
#define __pyx_n_s_Model_printStatistics __pyx_mstate_global->__pyx_n_s_Model_printStatistics
#define __pyx_n_s_Model_printVersion __pyx_mstate_global->__pyx_n_s_Model_printVersion
#define __pyx_n_s_Model_setDetectorEnabled __pyx_mstate_global->__pyx_n_s_Model_setDetectorEnabled
#define __pyx_n_s_Model_setDetectorFinishingEnable __pyx_mstate_global->__pyx_n_s_Model_setDetectorFinishingEnable
#define __pyx_n_s_Model_setDetectorPostprocessingE __pyx_mstate_global->__pyx_n_s_Model_setDetectorPostprocessingE
#define __pyx_n_s_Model_setGCGSeparating __pyx_mstate_global->__pyx_n_s_Model_setGCGSeparating
#define __pyx_n_s_Model_setPricingSolverEnabled __pyx_mstate_global->__pyx_n_s_Model_setPricingSolverEnabled
#define __pyx_n_s_Model_setPricingSolverExactEnabl __pyx_mstate_global->__pyx_n_s_Model_setPricingSolverExactEnabl
#define __pyx_n_s_Model_setPricingSolverHeuristicE __pyx_mstate_global->__pyx_n_s_Model_setPricingSolverHeuristicE
#define __pyx_n_s_Model_setVarClassifierEnabled __pyx_mstate_global->__pyx_n_s_Model_setVarClassifierEnabled
#define __pyx_n_s_Model_writeAllDecomps __pyx_mstate_global->__pyx_n_s_Model_writeAllDecomps
#define __pyx_n_s_NOTAPPLICABLE __pyx_mstate_global->__pyx_n_s_NOTAPPLICABLE
#define __pyx_n_s_OPTIMAL __pyx_mstate_global->__pyx_n_s_OPTIMAL
#define __pyx_n_s_PY_ALL __pyx_mstate_global->__pyx_n_s_PY_ALL
#define __pyx_n_s_PY_BLOCK __pyx_mstate_global->__pyx_n_s_PY_BLOCK
#define __pyx_n_s_PY_BOTH __pyx_mstate_global->__pyx_n_s_PY_BOTH
#define __pyx_n_s_PY_COMPLETE __pyx_mstate_global->__pyx_n_s_PY_COMPLETE
#define __pyx_n_s_PY_COMPLETED_CONSTOMASTER __pyx_mstate_global->__pyx_n_s_PY_COMPLETED_CONSTOMASTER
#define __pyx_n_s_PY_CONS_DECOMPINFO __pyx_mstate_global->__pyx_n_s_PY_CONS_DECOMPINFO
#define __pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth __pyx_mstate_global->__pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth
#define __pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy __pyx_mstate_global->__pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy
#define __pyx_n_s_PY_GCG_PRICINGSTATUS __pyx_mstate_global->__pyx_n_s_PY_GCG_PRICINGSTATUS
#define __pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy __pyx_mstate_global->__pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy
#define __pyx_n_s_PY_GCG_PRICINGSTATUS___setstate __pyx_mstate_global->__pyx_n_s_PY_GCG_PRICINGSTATUS___setstate
#define __pyx_n_s_PY_LINKING __pyx_mstate_global->__pyx_n_s_PY_LINKING
#define __pyx_n_s_PY_MASTER __pyx_mstate_global->__pyx_n_s_PY_MASTER
#define __pyx_n_s_PY_NOT __pyx_mstate_global->__pyx_n_s_PY_NOT
#define __pyx_n_s_PY_ONLY_MASTER __pyx_mstate_global->__pyx_n_s_PY_ONLY_MASTER
#define __pyx_n_s_PY_ONLY_PRICING __pyx_mstate_global->__pyx_n_s_PY_ONLY_PRICING
#define __pyx_n_s_PY_PARTIAL __pyx_mstate_global->__pyx_n_s_PY_PARTIAL
#define __pyx_n_s_PY_SCIP_CALL __pyx_mstate_global->__pyx_n_s_PY_SCIP_CALL
#define __pyx_n_s_PY_USERGIVEN __pyx_mstate_global->__pyx_n_s_PY_USERGIVEN
#define __pyx_n_s_PY_USERGIVEN___reduce_cython __pyx_mstate_global->__pyx_n_s_PY_USERGIVEN___reduce_cython
#define __pyx_n_s_PY_USERGIVEN___setstate_cython __pyx_mstate_global->__pyx_n_s_PY_USERGIVEN___setstate_cython
#define __pyx_n_s_PY_VAR_DECOMPINFO __pyx_mstate_global->__pyx_n_s_PY_VAR_DECOMPINFO
#define __pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho __pyx_mstate_global->__pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho
#define __pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt __pyx_mstate_global->__pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt
#define __pyx_n_s_PartialDecomposition __pyx_mstate_global->__pyx_n_s_PartialDecomposition
#define __pyx_n_s_PartialDecomposition___copy __pyx_mstate_global->__pyx_n_s_PartialDecomposition___copy
#define __pyx_n_s_PartialDecomposition___reduce_cy __pyx_mstate_global->__pyx_n_s_PartialDecomposition___reduce_cy
#define __pyx_n_s_PartialDecomposition___setstate __pyx_mstate_global->__pyx_n_s_PartialDecomposition___setstate
#define __pyx_n_s_PartialDecomposition__repr_png __pyx_mstate_global->__pyx_n_s_PartialDecomposition__repr_png
#define __pyx_n_s_PartialDecomposition__repr_svg __pyx_mstate_global->__pyx_n_s_PartialDecomposition__repr_svg
#define __pyx_n_s_PartialDecomposition_addAncestor __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addAncestor
#define __pyx_n_s_PartialDecomposition_addBlock __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addBlock
#define __pyx_n_s_PartialDecomposition_addClockTim __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addClockTim
#define __pyx_n_s_PartialDecomposition_addDecChang __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addDecChang
#define __pyx_n_s_PartialDecomposition_addDetector __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addDetector
#define __pyx_n_s_PartialDecomposition_addNNewBloc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addNNewBloc
#define __pyx_n_s_PartialDecomposition_addPctConss __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctConss
#define __pyx_n_s_PartialDecomposition_addPctConss_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctConss_2
#define __pyx_n_s_PartialDecomposition_addPctConss_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctConss_3
#define __pyx_n_s_PartialDecomposition_addPctVarsF __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctVarsF
#define __pyx_n_s_PartialDecomposition_addPctVarsT __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctVarsT
#define __pyx_n_s_PartialDecomposition_addPctVarsT_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_addPctVarsT_2
#define __pyx_n_s_PartialDecomposition_aggInfoCalc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_aggInfoCalc
#define __pyx_n_s_PartialDecomposition_alreadyAssi __pyx_mstate_global->__pyx_n_s_PartialDecomposition_alreadyAssi
#define __pyx_n_s_PartialDecomposition_assignCurre __pyx_mstate_global->__pyx_n_s_PartialDecomposition_assignCurre
#define __pyx_n_s_PartialDecomposition_assignOpenC __pyx_mstate_global->__pyx_n_s_PartialDecomposition_assignOpenC
#define __pyx_n_s_PartialDecomposition_assignSmall __pyx_mstate_global->__pyx_n_s_PartialDecomposition_assignSmall
#define __pyx_n_s_PartialDecomposition_buildDecCha __pyx_mstate_global->__pyx_n_s_PartialDecomposition_buildDecCha
#define __pyx_n_s_PartialDecomposition_calcAggrega __pyx_mstate_global->__pyx_n_s_PartialDecomposition_calcAggrega
#define __pyx_n_s_PartialDecomposition_calcStairli __pyx_mstate_global->__pyx_n_s_PartialDecomposition_calcStairli
#define __pyx_n_s_PartialDecomposition_checkAllCon __pyx_mstate_global->__pyx_n_s_PartialDecomposition_checkAllCon
#define __pyx_n_s_PartialDecomposition_checkConsis __pyx_mstate_global->__pyx_n_s_PartialDecomposition_checkConsis
#define __pyx_n_s_PartialDecomposition_complete __pyx_mstate_global->__pyx_n_s_PartialDecomposition_complete
#define __pyx_n_s_PartialDecomposition_completeByC __pyx_mstate_global->__pyx_n_s_PartialDecomposition_completeByC
#define __pyx_n_s_PartialDecomposition_completeByC_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_completeByC_2
#define __pyx_n_s_PartialDecomposition_completeGre __pyx_mstate_global->__pyx_n_s_PartialDecomposition_completeGre
#define __pyx_n_s_PartialDecomposition_considerImp __pyx_mstate_global->__pyx_n_s_PartialDecomposition_considerImp
#define __pyx_n_s_PartialDecomposition_copy __pyx_mstate_global->__pyx_n_s_PartialDecomposition_copy
#define __pyx_n_s_PartialDecomposition_copyPartiti __pyx_mstate_global->__pyx_n_s_PartialDecomposition_copyPartiti
#define __pyx_n_s_PartialDecomposition_deleteEmpty __pyx_mstate_global->__pyx_n_s_PartialDecomposition_deleteEmpty
#define __pyx_n_s_PartialDecomposition_deleteOpenc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_deleteOpenc
#define __pyx_n_s_PartialDecomposition_deleteOpenv __pyx_mstate_global->__pyx_n_s_PartialDecomposition_deleteOpenv
#define __pyx_n_s_PartialDecomposition_displayInfo __pyx_mstate_global->__pyx_n_s_PartialDecomposition_displayInfo
#define __pyx_n_s_PartialDecomposition_findVarsLin __pyx_mstate_global->__pyx_n_s_PartialDecomposition_findVarsLin
#define __pyx_n_s_PartialDecomposition_findVarsLin_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_findVarsLin_2
#define __pyx_n_s_PartialDecomposition_fixConsToBl __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConsToBl
#define __pyx_n_s_PartialDecomposition_fixConsToBl_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConsToBl_2
#define __pyx_n_s_PartialDecomposition_fixConsToMa __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConsToMa
#define __pyx_n_s_PartialDecomposition_fixConssToB __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConssToB
#define __pyx_n_s_PartialDecomposition_fixConssToB_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConssToB_2
#define __pyx_n_s_PartialDecomposition_fixConssToM __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixConssToM
#define __pyx_n_s_PartialDecomposition_fixVarToLin __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixVarToLin
#define __pyx_n_s_PartialDecomposition_fixVarToMas __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixVarToMas
#define __pyx_n_s_PartialDecomposition_fixVarToSta __pyx_mstate_global->__pyx_n_s_PartialDecomposition_fixVarToSta
#define __pyx_n_s_PartialDecomposition_getAncestor __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getAncestor
#define __pyx_n_s_PartialDecomposition_getAncestor_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getAncestor_2
#define __pyx_n_s_PartialDecomposition_getBlocksFo __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getBlocksFo
#define __pyx_n_s_PartialDecomposition_getConssFor __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getConssFor
#define __pyx_n_s_PartialDecomposition_getConssFor_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getConssFor_2
#define __pyx_n_s_PartialDecomposition_getDetector __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getDetector
#define __pyx_n_s_PartialDecomposition_getDetector_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getDetector_2
#define __pyx_n_s_PartialDecomposition_getDetector_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getDetector_3
#define __pyx_n_s_PartialDecomposition_getDetprobd __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getDetprobd
#define __pyx_n_s_PartialDecomposition_getFinished __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getFinished
#define __pyx_n_s_PartialDecomposition_getHashValu __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getHashValu
#define __pyx_n_s_PartialDecomposition_getID __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getID
#define __pyx_n_s_PartialDecomposition_getLinkingv __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getLinkingv
#define __pyx_n_s_PartialDecomposition_getMasterco __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getMasterco
#define __pyx_n_s_PartialDecomposition_getMasterva __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getMasterva
#define __pyx_n_s_PartialDecomposition_getNAncesto __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNAncesto
#define __pyx_n_s_PartialDecomposition_getNBlocks __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNBlocks
#define __pyx_n_s_PartialDecomposition_getNCoeffsF __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNCoeffsF
#define __pyx_n_s_PartialDecomposition_getNCoeffsF_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNCoeffsF_2
#define __pyx_n_s_PartialDecomposition_getNConss __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNConss
#define __pyx_n_s_PartialDecomposition_getNConssFo __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNConssFo
#define __pyx_n_s_PartialDecomposition_getNDetecto __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNDetecto
#define __pyx_n_s_PartialDecomposition_getNLinking __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNLinking
#define __pyx_n_s_PartialDecomposition_getNMasterc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNMasterc
#define __pyx_n_s_PartialDecomposition_getNMasterv __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNMasterv
#define __pyx_n_s_PartialDecomposition_getNNewBloc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNNewBloc
#define __pyx_n_s_PartialDecomposition_getNNewBloc_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNNewBloc_2
#define __pyx_n_s_PartialDecomposition_getNOpencon __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNOpencon
#define __pyx_n_s_PartialDecomposition_getNOpenvar __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNOpenvar
#define __pyx_n_s_PartialDecomposition_getNReps __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNReps
#define __pyx_n_s_PartialDecomposition_getNStairli __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNStairli
#define __pyx_n_s_PartialDecomposition_getNTotalSt __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNTotalSt
#define __pyx_n_s_PartialDecomposition_getNVars __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNVars
#define __pyx_n_s_PartialDecomposition_getNVarsFor __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNVarsFor
#define __pyx_n_s_PartialDecomposition_getNVarsFor_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getNVarsFor_2
#define __pyx_n_s_PartialDecomposition_getOpencons __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getOpencons
#define __pyx_n_s_PartialDecomposition_getOpenvars __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getOpenvars
#define __pyx_n_s_PartialDecomposition_getPctConss __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss
#define __pyx_n_s_PartialDecomposition_getPctConss_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss_2
#define __pyx_n_s_PartialDecomposition_getPctConss_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss_3
#define __pyx_n_s_PartialDecomposition_getPctConss_4 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss_4
#define __pyx_n_s_PartialDecomposition_getPctConss_5 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss_5
#define __pyx_n_s_PartialDecomposition_getPctConss_6 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctConss_6
#define __pyx_n_s_PartialDecomposition_getPctVarsF __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsF
#define __pyx_n_s_PartialDecomposition_getPctVarsF_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsF_2
#define __pyx_n_s_PartialDecomposition_getPctVarsT __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsT
#define __pyx_n_s_PartialDecomposition_getPctVarsT_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsT_2
#define __pyx_n_s_PartialDecomposition_getPctVarsT_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsT_3
#define __pyx_n_s_PartialDecomposition_getPctVarsT_4 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getPctVarsT_4
#define __pyx_n_s_PartialDecomposition_getRepForBl __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getRepForBl
#define __pyx_n_s_PartialDecomposition_getRepVarma __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getRepVarma
#define __pyx_n_s_PartialDecomposition_getScore __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getScore
#define __pyx_n_s_PartialDecomposition_getTranslat __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getTranslat
#define __pyx_n_s_PartialDecomposition_getUsergive __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getUsergive
#define __pyx_n_s_PartialDecomposition_getVarProbi __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getVarProbi
#define __pyx_n_s_PartialDecomposition_getVarsForB __pyx_mstate_global->__pyx_n_s_PartialDecomposition_getVarsForB
#define __pyx_n_s_PartialDecomposition_hasSetppMas __pyx_mstate_global->__pyx_n_s_PartialDecomposition_hasSetppMas
#define __pyx_n_s_PartialDecomposition_hasSetppcMa __pyx_mstate_global->__pyx_n_s_PartialDecomposition_hasSetppcMa
#define __pyx_n_s_PartialDecomposition_hasSetppcca __pyx_mstate_global->__pyx_n_s_PartialDecomposition_hasSetppcca
#define __pyx_n_s_PartialDecomposition_isAssignedT __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isAssignedT
#define __pyx_n_s_PartialDecomposition_isComplete __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isComplete
#define __pyx_n_s_PartialDecomposition_isConsMaste __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isConsMaste
#define __pyx_n_s_PartialDecomposition_isConsOpenc __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isConsOpenc
#define __pyx_n_s_PartialDecomposition_isTrivial __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isTrivial
#define __pyx_n_s_PartialDecomposition_isVarBlockv __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarBlockv
#define __pyx_n_s_PartialDecomposition_isVarLinkin __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarLinkin
#define __pyx_n_s_PartialDecomposition_isVarMaster __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarMaster
#define __pyx_n_s_PartialDecomposition_isVarOpenva __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarOpenva
#define __pyx_n_s_PartialDecomposition_isVarStairl __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarStairl
#define __pyx_n_s_PartialDecomposition_isVarStairl_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_isVarStairl_2
#define __pyx_kp_u_PartialDecomposition_nBlocks __pyx_mstate_global->__pyx_kp_u_PartialDecomposition_nBlocks
#define __pyx_n_s_PartialDecomposition_prepare __pyx_mstate_global->__pyx_n_s_PartialDecomposition_prepare
#define __pyx_n_s_PartialDecomposition_refineToBlo __pyx_mstate_global->__pyx_n_s_PartialDecomposition_refineToBlo
#define __pyx_n_s_PartialDecomposition_refineToMas __pyx_mstate_global->__pyx_n_s_PartialDecomposition_refineToMas
#define __pyx_n_s_PartialDecomposition_removeAnces __pyx_mstate_global->__pyx_n_s_PartialDecomposition_removeAnces
#define __pyx_n_s_PartialDecomposition_removeMaste __pyx_mstate_global->__pyx_n_s_PartialDecomposition_removeMaste
#define __pyx_n_s_PartialDecomposition_setAncestor __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setAncestor
#define __pyx_n_s_PartialDecomposition_setConsPart __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setConsPart
#define __pyx_n_s_PartialDecomposition_setConsToMa __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setConsToMa
#define __pyx_n_s_PartialDecomposition_setDetector __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setDetector
#define __pyx_n_s_PartialDecomposition_setDetector_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setDetector_2
#define __pyx_n_s_PartialDecomposition_setDetector_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setDetector_3
#define __pyx_n_s_PartialDecomposition_setDetector_4 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setDetector_4
#define __pyx_n_s_PartialDecomposition_setFinished __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setFinished
#define __pyx_n_s_PartialDecomposition_setFinished_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setFinished_2
#define __pyx_n_s_PartialDecomposition_setNBlocks __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setNBlocks
#define __pyx_n_s_PartialDecomposition_setPctConss __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctConss
#define __pyx_n_s_PartialDecomposition_setPctConss_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctConss_2
#define __pyx_n_s_PartialDecomposition_setPctConss_3 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctConss_3
#define __pyx_n_s_PartialDecomposition_setPctVarsF __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctVarsF
#define __pyx_n_s_PartialDecomposition_setPctVarsT __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctVarsT
#define __pyx_n_s_PartialDecomposition_setPctVarsT_2 __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setPctVarsT_2
#define __pyx_n_s_PartialDecomposition_setStemsFro __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setStemsFro
#define __pyx_n_s_PartialDecomposition_setTranslat __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setTranslat
#define __pyx_n_s_PartialDecomposition_setUsergive __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setUsergive
#define __pyx_n_s_PartialDecomposition_setVarParti __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setVarParti
#define __pyx_n_s_PartialDecomposition_setVarToBlo __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setVarToBlo
#define __pyx_n_s_PartialDecomposition_setVarToLin __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setVarToLin
#define __pyx_n_s_PartialDecomposition_setVarToMas __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setVarToMas
#define __pyx_n_s_PartialDecomposition_setVarToSta __pyx_mstate_global->__pyx_n_s_PartialDecomposition_setVarToSta
#define __pyx_n_s_PartialDecomposition_shouldCompl __pyx_mstate_global->__pyx_n_s_PartialDecomposition_shouldCompl
#define __pyx_n_s_PartialDecomposition_showVisuali __pyx_mstate_global->__pyx_n_s_PartialDecomposition_showVisuali
#define __pyx_n_s_PartialDecomposition_sort __pyx_mstate_global->__pyx_n_s_PartialDecomposition_sort
#define __pyx_n_s_Path __pyx_mstate_global->__pyx_n_s_Path
#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
#define __pyx_n_s_PricingSolver __pyx_mstate_global->__pyx_n_s_PricingSolver
#define __pyx_n_s_PricingSolver___reduce_cython __pyx_mstate_global->__pyx_n_s_PricingSolver___reduce_cython
#define __pyx_n_s_PricingSolver___setstate_cython __pyx_mstate_global->__pyx_n_s_PricingSolver___setstate_cython
#define __pyx_n_s_PricingSolver_exitSolution __pyx_mstate_global->__pyx_n_s_PricingSolver_exitSolution
#define __pyx_n_s_PricingSolver_exitSolver __pyx_mstate_global->__pyx_n_s_PricingSolver_exitSolver
#define __pyx_n_s_PricingSolver_freeSolver __pyx_mstate_global->__pyx_n_s_PricingSolver_freeSolver
#define __pyx_n_s_PricingSolver_initSolution __pyx_mstate_global->__pyx_n_s_PricingSolver_initSolution
#define __pyx_n_s_PricingSolver_initSolver __pyx_mstate_global->__pyx_n_s_PricingSolver_initSolver
#define __pyx_n_s_PricingSolver_solve __pyx_mstate_global->__pyx_n_s_PricingSolver_solve
#define __pyx_n_s_PricingSolver_solveHeuristic __pyx_mstate_global->__pyx_n_s_PricingSolver_solveHeuristic
#define __pyx_n_s_PricingSolver_updateSolver __pyx_mstate_global->__pyx_n_s_PricingSolver_updateSolver
#define __pyx_n_s_SOLVERLIMIT __pyx_mstate_global->__pyx_n_s_SOLVERLIMIT
#define __pyx_n_s_Score __pyx_mstate_global->__pyx_n_s_Score
#define __pyx_n_s_Score___reduce_cython __pyx_mstate_global->__pyx_n_s_Score___reduce_cython
#define __pyx_n_s_Score___setstate_cython __pyx_mstate_global->__pyx_n_s_Score___setstate_cython
#define __pyx_n_s_Score_scorecalculate __pyx_mstate_global->__pyx_n_s_Score_scorecalculate
#define __pyx_n_s_Score_scorefree __pyx_mstate_global->__pyx_n_s_Score_scorefree
#define __pyx_n_s_TemporaryDirectory __pyx_mstate_global->__pyx_n_s_TemporaryDirectory
#define __pyx_kp_u_The_value_of_the_key_newpartiald __pyx_mstate_global->__pyx_kp_u_The_value_of_the_key_newpartiald
#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
#define __pyx_n_s_UNBOUNDED __pyx_mstate_global->__pyx_n_s_UNBOUNDED
#define __pyx_n_s_UNKNOWN __pyx_mstate_global->__pyx_n_s_UNKNOWN
#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
#define __pyx_n_s_VarClassifier __pyx_mstate_global->__pyx_n_s_VarClassifier
#define __pyx_n_s_VarClassifier___reduce_cython __pyx_mstate_global->__pyx_n_s_VarClassifier___reduce_cython
#define __pyx_n_s_VarClassifier___setstate_cython __pyx_mstate_global->__pyx_n_s_VarClassifier___setstate_cython
#define __pyx_n_s_VarClassifier_classify __pyx_mstate_global->__pyx_n_s_VarClassifier_classify
#define __pyx_n_s_VarClassifier_freeVarClassifier __pyx_mstate_global->__pyx_n_s_VarClassifier_freeVarClassifier
#define __pyx_n_s_VarPart __pyx_mstate_global->__pyx_n_s_VarPart
#define __pyx_n_s_VarPart___reduce_cython __pyx_mstate_global->__pyx_n_s_VarPart___reduce_cython
#define __pyx_n_s_VarPart___setstate_cython __pyx_mstate_global->__pyx_n_s_VarPart___setstate_cython
#define __pyx_n_s_VarPart_addClass __pyx_mstate_global->__pyx_n_s_VarPart_addClass
#define __pyx_n_s_VarPart_assignVarToClass __pyx_mstate_global->__pyx_n_s_VarPart_assignVarToClass
#define __pyx_n_s_VarPart_getAllSubsets __pyx_mstate_global->__pyx_n_s_VarPart_getAllSubsets
#define __pyx_n_s_VarPart_getClassDecompInfo __pyx_mstate_global->__pyx_n_s_VarPart_getClassDecompInfo
#define __pyx_n_s_VarPart_getClassDescription __pyx_mstate_global->__pyx_n_s_VarPart_getClassDescription
#define __pyx_n_s_VarPart_getClassName __pyx_mstate_global->__pyx_n_s_VarPart_getClassName
#define __pyx_n_s_VarPart_getClassNameOfVar __pyx_mstate_global->__pyx_n_s_VarPart_getClassNameOfVar
#define __pyx_n_s_VarPart_getClassOfVar __pyx_mstate_global->__pyx_n_s_VarPart_getClassOfVar
#define __pyx_n_s_VarPart_getNClasses __pyx_mstate_global->__pyx_n_s_VarPart_getNClasses
#define __pyx_n_s_VarPart_getNVars __pyx_mstate_global->__pyx_n_s_VarPart_getNVars
#define __pyx_n_s_VarPart_getNVarsOfClasses __pyx_mstate_global->__pyx_n_s_VarPart_getNVarsOfClasses
#define __pyx_n_s_VarPart_getName __pyx_mstate_global->__pyx_n_s_VarPart_getName
#define __pyx_n_s_VarPart_isVarClassified __pyx_mstate_global->__pyx_n_s_VarPart_isVarClassified
#define __pyx_n_s_VarPart_reduceClasses __pyx_mstate_global->__pyx_n_s_VarPart_reduceClasses
#define __pyx_n_s_VarPart_removeEmptyClasses __pyx_mstate_global->__pyx_n_s_VarPart_removeEmptyClasses
#define __pyx_n_s_VarPart_setClassDecompInfo __pyx_mstate_global->__pyx_n_s_VarPart_setClassDecompInfo
#define __pyx_n_s_VarPart_setClassDescription __pyx_mstate_global->__pyx_n_s_VarPart_setClassDescription
#define __pyx_n_s_VarPart_setClassName __pyx_mstate_global->__pyx_n_s_VarPart_setClassName
#define __pyx_kp_u_Varclassifier_0_yields_a_classif __pyx_mstate_global->__pyx_kp_u_Varclassifier_0_yields_a_classif
#define __pyx_n_s_Warning __pyx_mstate_global->__pyx_n_s_Warning
#define __pyx_n_s__20 __pyx_mstate_global->__pyx_n_s__20
#define __pyx_n_s__515 __pyx_mstate_global->__pyx_n_s__515
#define __pyx_kp_u__6 __pyx_mstate_global->__pyx_kp_u__6
#define __pyx_kp_u__8 __pyx_mstate_global->__pyx_kp_u__8
#define __pyx_n_s_addAncestorID __pyx_mstate_global->__pyx_n_s_addAncestorID
#define __pyx_n_s_addBlock __pyx_mstate_global->__pyx_n_s_addBlock
#define __pyx_n_s_addCandidatesNBlocksNVotes __pyx_mstate_global->__pyx_n_s_addCandidatesNBlocksNVotes
#define __pyx_n_s_addClass __pyx_mstate_global->__pyx_n_s_addClass
#define __pyx_n_s_addClockTime __pyx_mstate_global->__pyx_n_s_addClockTime
#define __pyx_n_s_addCol __pyx_mstate_global->__pyx_n_s_addCol
#define __pyx_n_s_addConsPartition __pyx_mstate_global->__pyx_n_s_addConsPartition
#define __pyx_n_s_addDecChangesFromAncestor __pyx_mstate_global->__pyx_n_s_addDecChangesFromAncestor
#define __pyx_n_s_addDecomposition __pyx_mstate_global->__pyx_n_s_addDecomposition
#define __pyx_n_s_addDecompositionFromConss __pyx_mstate_global->__pyx_n_s_addDecompositionFromConss
#define __pyx_n_s_addDetectorChainInfo __pyx_mstate_global->__pyx_n_s_addDetectorChainInfo
#define __pyx_n_s_addNNewBlocks __pyx_mstate_global->__pyx_n_s_addNNewBlocks
#define __pyx_n_s_addPartialdecToAncestor __pyx_mstate_global->__pyx_n_s_addPartialdecToAncestor
#define __pyx_n_s_addPartialdecToFinished __pyx_mstate_global->__pyx_n_s_addPartialdecToFinished
#define __pyx_n_s_addPartialdecToFinishedUnchecked __pyx_mstate_global->__pyx_n_s_addPartialdecToFinishedUnchecked
#define __pyx_n_s_addPartialdecToOpen __pyx_mstate_global->__pyx_n_s_addPartialdecToOpen
#define __pyx_n_s_addPctConssFromFree __pyx_mstate_global->__pyx_n_s_addPctConssFromFree
#define __pyx_n_s_addPctConssToBlock __pyx_mstate_global->__pyx_n_s_addPctConssToBlock
#define __pyx_n_s_addPctConssToBorder __pyx_mstate_global->__pyx_n_s_addPctConssToBorder
#define __pyx_n_s_addPctVarsFromFree __pyx_mstate_global->__pyx_n_s_addPctVarsFromFree
#define __pyx_n_s_addPctVarsToBlock __pyx_mstate_global->__pyx_n_s_addPctVarsToBlock
#define __pyx_n_s_addPctVarsToBorder __pyx_mstate_global->__pyx_n_s_addPctVarsToBorder
#define __pyx_n_s_addPreexistingPartialDecompositi __pyx_mstate_global->__pyx_n_s_addPreexistingPartialDecompositi
#define __pyx_n_s_addVar __pyx_mstate_global->__pyx_n_s_addVar
#define __pyx_n_s_addVarPartition __pyx_mstate_global->__pyx_n_s_addVarPartition
#define __pyx_n_s_aggInfoCalculated __pyx_mstate_global->__pyx_n_s_aggInfoCalculated
#define __pyx_n_s_all __pyx_mstate_global->__pyx_n_s_all
#define __pyx_kp_u_alldecompositions __pyx_mstate_global->__pyx_kp_u_alldecompositions
#define __pyx_n_s_alreadyAssignedConssToBlocks __pyx_mstate_global->__pyx_n_s_alreadyAssignedConssToBlocks
#define __pyx_n_s_ancestor __pyx_mstate_global->__pyx_n_s_ancestor
#define __pyx_n_s_ancestor_id __pyx_mstate_global->__pyx_n_s_ancestor_id
#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
#define __pyx_n_s_assignConsToClass __pyx_mstate_global->__pyx_n_s_assignConsToClass
#define __pyx_n_s_assignCurrentStairlinking __pyx_mstate_global->__pyx_n_s_assignCurrentStairlinking
#define __pyx_n_s_assignOpenConssToMaster __pyx_mstate_global->__pyx_n_s_assignOpenConssToMaster
#define __pyx_n_s_assignSmallestComponentsButOneCo __pyx_mstate_global->__pyx_n_s_assignSmallestComponentsButOneCo
#define __pyx_n_s_assignVarToClass __pyx_mstate_global->__pyx_n_s_assignVarToClass
#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
#define __pyx_n_s_block __pyx_mstate_global->__pyx_n_s_block
#define __pyx_n_s_block1_id __pyx_mstate_global->__pyx_n_s_block1_id
#define __pyx_n_s_block2_id __pyx_mstate_global->__pyx_n_s_block2_id
#define __pyx_n_s_block_conss __pyx_mstate_global->__pyx_n_s_block_conss
#define __pyx_n_s_block_id __pyx_mstate_global->__pyx_n_s_block_id
#define __pyx_n_s_blockrepid __pyx_mstate_global->__pyx_n_s_blockrepid
#define __pyx_kp_u_border_area __pyx_mstate_global->__pyx_kp_u_border_area
#define __pyx_n_s_both __pyx_mstate_global->__pyx_n_s_both
#define __pyx_n_s_buffer __pyx_mstate_global->__pyx_n_s_buffer
#define __pyx_n_s_buildDecChainString __pyx_mstate_global->__pyx_n_s_buildDecChainString
#define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c
#define __pyx_n_s_c_buffer __pyx_mstate_global->__pyx_n_s_c_buffer
#define __pyx_n_s_c_consclassifiername __pyx_mstate_global->__pyx_n_s_c_consclassifiername
#define __pyx_n_s_c_decchar __pyx_mstate_global->__pyx_n_s_c_decchar
#define __pyx_n_s_c_decinfo __pyx_mstate_global->__pyx_n_s_c_decinfo
#define __pyx_n_s_c_desc __pyx_mstate_global->__pyx_n_s_c_desc
#define __pyx_n_s_c_detectorname __pyx_mstate_global->__pyx_n_s_c_detectorname
#define __pyx_n_s_c_directory __pyx_mstate_global->__pyx_n_s_c_directory
#define __pyx_n_s_c_extension __pyx_mstate_global->__pyx_n_s_c_extension
#define __pyx_n_s_c_name __pyx_mstate_global->__pyx_n_s_c_name
#define __pyx_n_s_c_scorename __pyx_mstate_global->__pyx_n_s_c_scorename
#define __pyx_n_s_c_shortname __pyx_mstate_global->__pyx_n_s_c_shortname
#define __pyx_n_s_c_solvername __pyx_mstate_global->__pyx_n_s_c_solvername
#define __pyx_n_s_c_vals __pyx_mstate_global->__pyx_n_s_c_vals
#define __pyx_n_s_c_varclassifiername __pyx_mstate_global->__pyx_n_s_c_varclassifiername
#define __pyx_n_s_c_vars __pyx_mstate_global->__pyx_n_s_c_vars
#define __pyx_n_s_calcAggregationInformation __pyx_mstate_global->__pyx_n_s_calcAggregationInformation
#define __pyx_n_s_calcStairlinkingVars __pyx_mstate_global->__pyx_n_s_calcStairlinkingVars
#define __pyx_n_s_candidate __pyx_mstate_global->__pyx_n_s_candidate
#define __pyx_n_s_candidates __pyx_mstate_global->__pyx_n_s_candidates
#define __pyx_n_s_candidatesNBlocks __pyx_mstate_global->__pyx_n_s_candidatesNBlocks
#define __pyx_kp_u_cannot_create_Column_with_GCG_CO __pyx_mstate_global->__pyx_kp_u_cannot_create_Column_with_GCG_CO
#define __pyx_kp_u_cannot_create_ConsPart_with_Cons __pyx_mstate_global->__pyx_kp_u_cannot_create_ConsPart_with_Cons
#define __pyx_kp_u_cannot_create_DetProbData_with_D __pyx_mstate_global->__pyx_kp_u_cannot_create_DetProbData_with_D
#define __pyx_kp_u_cannot_create_Model_with_SCIP_NU __pyx_mstate_global->__pyx_kp_u_cannot_create_Model_with_SCIP_NU
#define __pyx_kp_u_cannot_create_PartialDecompositi __pyx_mstate_global->__pyx_kp_u_cannot_create_PartialDecompositi
#define __pyx_kp_u_cannot_create_VarPart_with_VarPa __pyx_mstate_global->__pyx_kp_u_cannot_create_VarPart_with_VarPa
#define __pyx_n_s_checkAllConssAssigned __pyx_mstate_global->__pyx_n_s_checkAllConssAssigned
#define __pyx_n_s_checkConsistency __pyx_mstate_global->__pyx_n_s_checkConsistency
#define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class
#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
#define __pyx_n_u_classic __pyx_mstate_global->__pyx_n_u_classic
#define __pyx_n_s_classificationtime __pyx_mstate_global->__pyx_n_s_classificationtime
#define __pyx_n_s_classify __pyx_mstate_global->__pyx_n_s_classify
#define __pyx_n_s_classindex __pyx_mstate_global->__pyx_n_s_classindex
#define __pyx_n_s_clearAncestorPartialdecs __pyx_mstate_global->__pyx_n_s_clearAncestorPartialdecs
#define __pyx_n_s_clearCurrentPartialdecs __pyx_mstate_global->__pyx_n_s_clearCurrentPartialdecs
#define __pyx_n_s_clearFinishedPartialdecs __pyx_mstate_global->__pyx_n_s_clearFinishedPartialdecs
#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
#define __pyx_n_s_clocktime __pyx_mstate_global->__pyx_n_s_clocktime
#define __pyx_n_s_col __pyx_mstate_global->__pyx_n_s_col
#define __pyx_n_s_collections_abc __pyx_mstate_global->__pyx_n_s_collections_abc
#define __pyx_n_s_complete __pyx_mstate_global->__pyx_n_s_complete
#define __pyx_n_s_completeByConnected __pyx_mstate_global->__pyx_n_s_completeByConnected
#define __pyx_n_s_completeByConnectedConssAdjacenc __pyx_mstate_global->__pyx_n_s_completeByConnectedConssAdjacenc
#define __pyx_n_s_completeGreedily __pyx_mstate_global->__pyx_n_s_completeGreedily
#define __pyx_n_s_comppartialdec __pyx_mstate_global->__pyx_n_s_comppartialdec
#define __pyx_n_s_cons __pyx_mstate_global->__pyx_n_s_cons
#define __pyx_n_s_consIndex __pyx_mstate_global->__pyx_n_s_consIndex
#define __pyx_n_s_consclassesmaster __pyx_mstate_global->__pyx_n_s_consclassesmaster
#define __pyx_n_s_consclassifier __pyx_mstate_global->__pyx_n_s_consclassifier
#define __pyx_n_s_consclassifiername __pyx_mstate_global->__pyx_n_s_consclassifiername
#define __pyx_n_s_consclassifiers __pyx_mstate_global->__pyx_n_s_consclassifiers
#define __pyx_n_s_considerImplicits __pyx_mstate_global->__pyx_n_s_considerImplicits
#define __pyx_n_s_conspartitioncollection __pyx_mstate_global->__pyx_n_s_conspartitioncollection
#define __pyx_n_s_conspartitioncollection_element __pyx_mstate_global->__pyx_n_s_conspartitioncollection_element
#define __pyx_n_s_conspartitioncollection_ptr __pyx_mstate_global->__pyx_n_s_conspartitioncollection_ptr
#define __pyx_n_s_conspatitionptr __pyx_mstate_global->__pyx_n_s_conspatitionptr
#define __pyx_n_s_conss __pyx_mstate_global->__pyx_n_s_conss
#define __pyx_n_s_consschanged __pyx_mstate_global->__pyx_n_s_consschanged
#define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy
#define __pyx_n_s_copyPartitionStatistics __pyx_mstate_global->__pyx_n_s_copyPartitionStatistics
#define __pyx_n_s_copy_2 __pyx_mstate_global->__pyx_n_s_copy_2
#define __pyx_n_s_cpp_ancestor __pyx_mstate_global->__pyx_n_s_cpp_ancestor
#define __pyx_n_s_cpp_ancestor_id __pyx_mstate_global->__pyx_n_s_cpp_ancestor_id
#define __pyx_n_s_cpp_block __pyx_mstate_global->__pyx_n_s_cpp_block
#define __pyx_n_s_cpp_block1_id __pyx_mstate_global->__pyx_n_s_cpp_block1_id
#define __pyx_n_s_cpp_block2_id __pyx_mstate_global->__pyx_n_s_cpp_block2_id
#define __pyx_n_s_cpp_block_id __pyx_mstate_global->__pyx_n_s_cpp_block_id
#define __pyx_n_s_cpp_blockrepid __pyx_mstate_global->__pyx_n_s_cpp_blockrepid
#define __pyx_n_s_cpp_candidates __pyx_mstate_global->__pyx_n_s_cpp_candidates
#define __pyx_n_s_cpp_candidatesNBlocks __pyx_mstate_global->__pyx_n_s_cpp_candidatesNBlocks
#define __pyx_n_s_cpp_classificationtime __pyx_mstate_global->__pyx_n_s_cpp_classificationtime
#define __pyx_n_s_cpp_clocktime __pyx_mstate_global->__pyx_n_s_cpp_clocktime
#define __pyx_n_s_cpp_comppartialdec __pyx_mstate_global->__pyx_n_s_cpp_comppartialdec
#define __pyx_n_s_cpp_consclassesmaster __pyx_mstate_global->__pyx_n_s_cpp_consclassesmaster
#define __pyx_n_s_cpp_consindex __pyx_mstate_global->__pyx_n_s_cpp_consindex
#define __pyx_n_s_cpp_conspartitioncollection __pyx_mstate_global->__pyx_n_s_cpp_conspartitioncollection
#define __pyx_n_s_cpp_dec_id __pyx_mstate_global->__pyx_n_s_cpp_dec_id
#define __pyx_n_s_cpp_detailLevel __pyx_mstate_global->__pyx_n_s_cpp_detailLevel
#define __pyx_n_s_cpp_detectorchain_id __pyx_mstate_global->__pyx_n_s_cpp_detectorchain_id
#define __pyx_n_s_cpp_detectorchainindex __pyx_mstate_global->__pyx_n_s_cpp_detectorchainindex
#define __pyx_n_s_cpp_finished __pyx_mstate_global->__pyx_n_s_cpp_finished
#define __pyx_n_s_cpp_firstblock_id __pyx_mstate_global->__pyx_n_s_cpp_firstblock_id
#define __pyx_n_s_cpp_fromorig __pyx_mstate_global->__pyx_n_s_cpp_fromorig
#define __pyx_n_s_cpp_ignoreDetectionLimits __pyx_mstate_global->__pyx_n_s_cpp_ignoreDetectionLimits
#define __pyx_n_s_cpp_nblocks __pyx_mstate_global->__pyx_n_s_cpp_nblocks
#define __pyx_n_s_cpp_nblockscandidatescalctime __pyx_mstate_global->__pyx_n_s_cpp_nblockscandidatescalctime
#define __pyx_n_s_cpp_newlist __pyx_mstate_global->__pyx_n_s_cpp_newlist
#define __pyx_n_s_cpp_newvector __pyx_mstate_global->__pyx_n_s_cpp_newvector
#define __pyx_n_s_cpp_nnewblocks __pyx_mstate_global->__pyx_n_s_cpp_nnewblocks
#define __pyx_n_s_cpp_otherdata __pyx_mstate_global->__pyx_n_s_cpp_otherdata
#define __pyx_n_s_cpp_otherpartialdec __pyx_mstate_global->__pyx_n_s_cpp_otherpartialdec
#define __pyx_n_s_cpp_otherpartialdecs __pyx_mstate_global->__pyx_n_s_cpp_otherpartialdecs
#define __pyx_n_s_cpp_partialdec __pyx_mstate_global->__pyx_n_s_cpp_partialdec
#define __pyx_n_s_cpp_partialdecs __pyx_mstate_global->__pyx_n_s_cpp_partialdecs
#define __pyx_n_s_cpp_partition __pyx_mstate_global->__pyx_n_s_cpp_partition
#define __pyx_n_s_cpp_pct __pyx_mstate_global->__pyx_n_s_cpp_pct
#define __pyx_n_s_cpp_postprocessingtime __pyx_mstate_global->__pyx_n_s_cpp_postprocessingtime
#define __pyx_n_s_cpp_rep_id __pyx_mstate_global->__pyx_n_s_cpp_rep_id
#define __pyx_n_s_cpp_repid __pyx_mstate_global->__pyx_n_s_cpp_repid
#define __pyx_n_s_cpp_translatingtime __pyx_mstate_global->__pyx_n_s_cpp_translatingtime
#define __pyx_n_s_cpp_varclasseslinking __pyx_mstate_global->__pyx_n_s_cpp_varclasseslinking
#define __pyx_n_s_cpp_varclassesmaster __pyx_mstate_global->__pyx_n_s_cpp_varclassesmaster
#define __pyx_n_s_cpp_variables __pyx_mstate_global->__pyx_n_s_cpp_variables
#define __pyx_n_s_cpp_varid __pyx_mstate_global->__pyx_n_s_cpp_varid
#define __pyx_n_s_cpp_varindex __pyx_mstate_global->__pyx_n_s_cpp_varindex
#define __pyx_n_s_cpp_varpartitioncollection __pyx_mstate_global->__pyx_n_s_cpp_varpartitioncollection
#define __pyx_n_s_createConsPart __pyx_mstate_global->__pyx_n_s_createConsPart
#define __pyx_n_s_createConssAdjacency __pyx_mstate_global->__pyx_n_s_createConssAdjacency
#define __pyx_n_s_createDecomposition __pyx_mstate_global->__pyx_n_s_createDecomposition
#define __pyx_n_s_createDirectory __pyx_mstate_global->__pyx_n_s_createDirectory
#define __pyx_n_s_createGcgCol __pyx_mstate_global->__pyx_n_s_createGcgCol
#define __pyx_n_s_createVarPart __pyx_mstate_global->__pyx_n_s_createVarPart
#define __pyx_n_s_createscip __pyx_mstate_global->__pyx_n_s_createscip
#define __pyx_n_s_dec __pyx_mstate_global->__pyx_n_s_dec
#define __pyx_n_u_dec __pyx_mstate_global->__pyx_n_u_dec
#define __pyx_n_s_dec_id __pyx_mstate_global->__pyx_n_s_dec_id
#define __pyx_n_s_decchar __pyx_mstate_global->__pyx_n_s_decchar
#define __pyx_n_s_decids __pyx_mstate_global->__pyx_n_s_decids
#define __pyx_n_s_decinfo __pyx_mstate_global->__pyx_n_s_decinfo
#define __pyx_n_s_decomp __pyx_mstate_global->__pyx_n_s_decomp
#define __pyx_n_s_decompInfo __pyx_mstate_global->__pyx_n_s_decompInfo
#define __pyx_n_s_decomps __pyx_mstate_global->__pyx_n_s_decomps
#define __pyx_n_s_deleteEmptyBlocks __pyx_mstate_global->__pyx_n_s_deleteEmptyBlocks
#define __pyx_n_s_deleteOpencons __pyx_mstate_global->__pyx_n_s_deleteOpencons
#define __pyx_n_s_deleteOpenvar __pyx_mstate_global->__pyx_n_s_deleteOpenvar
#define __pyx_n_s_desc __pyx_mstate_global->__pyx_n_s_desc
#define __pyx_n_s_det_prob_data __pyx_mstate_global->__pyx_n_s_det_prob_data
#define __pyx_n_s_detailLevel __pyx_mstate_global->__pyx_n_s_detailLevel
#define __pyx_n_s_detect __pyx_mstate_global->__pyx_n_s_detect
#define __pyx_kp_u_detection_classification_varclas __pyx_mstate_global->__pyx_kp_u_detection_classification_varclas
#define __pyx_kp_u_detection_detectors_enabled __pyx_mstate_global->__pyx_kp_u_detection_detectors_enabled
#define __pyx_kp_u_detection_detectors_finishingena __pyx_mstate_global->__pyx_kp_u_detection_detectors_finishingena
#define __pyx_kp_u_detection_detectors_postprocessi __pyx_mstate_global->__pyx_kp_u_detection_detectors_postprocessi
#define __pyx_n_s_detector __pyx_mstate_global->__pyx_n_s_detector
#define __pyx_n_s_detector_name __pyx_mstate_global->__pyx_n_s_detector_name
#define __pyx_n_s_detectorchain_id __pyx_mstate_global->__pyx_n_s_detectorchain_id
#define __pyx_n_s_detectorchainindex __pyx_mstate_global->__pyx_n_s_detectorchainindex
#define __pyx_n_s_detectorname __pyx_mstate_global->__pyx_n_s_detectorname
#define __pyx_n_s_detectors __pyx_mstate_global->__pyx_n_s_detectors
#define __pyx_n_s_detprobdata __pyx_mstate_global->__pyx_n_s_detprobdata
#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2
#define __pyx_n_s_directory __pyx_mstate_global->__pyx_n_s_directory
#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
#define __pyx_n_s_displayInfo __pyx_mstate_global->__pyx_n_s_displayInfo
#define __pyx_n_s_dualsolconv __pyx_mstate_global->__pyx_n_s_dualsolconv
#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
#define __pyx_n_s_enabled __pyx_mstate_global->__pyx_n_s_enabled
#define __pyx_n_s_enabledfinishing __pyx_mstate_global->__pyx_n_s_enabledfinishing
#define __pyx_n_s_enabledpostprocessing __pyx_mstate_global->__pyx_n_s_enabledpostprocessing
#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
#define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate
#define __pyx_n_s_exactEnabled __pyx_mstate_global->__pyx_n_s_exactEnabled
#define __pyx_n_s_exist_ok __pyx_mstate_global->__pyx_n_s_exist_ok
#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
#define __pyx_n_s_exitDetector __pyx_mstate_global->__pyx_n_s_exitDetector
#define __pyx_n_s_exitSolution __pyx_mstate_global->__pyx_n_s_exitSolution
#define __pyx_n_s_exitSolver __pyx_mstate_global->__pyx_n_s_exitSolver
#define __pyx_kp_u_experimental_benders_score __pyx_mstate_global->__pyx_kp_u_experimental_benders_score
#define __pyx_n_s_extension __pyx_mstate_global->__pyx_n_s_extension
#define __pyx_n_s_findVarsLinkingToMaster __pyx_mstate_global->__pyx_n_s_findVarsLinkingToMaster
#define __pyx_n_s_findVarsLinkingToStairlinking __pyx_mstate_global->__pyx_n_s_findVarsLinkingToStairlinking
#define __pyx_n_s_finishPartialdec __pyx_mstate_global->__pyx_n_s_finishPartialdec
#define __pyx_n_s_finished __pyx_mstate_global->__pyx_n_s_finished
#define __pyx_n_s_firstblock_id __pyx_mstate_global->__pyx_n_s_firstblock_id
#define __pyx_n_s_fixConsToBlock __pyx_mstate_global->__pyx_n_s_fixConsToBlock
#define __pyx_n_s_fixConsToBlockId __pyx_mstate_global->__pyx_n_s_fixConsToBlockId
#define __pyx_n_s_fixConsToMaster __pyx_mstate_global->__pyx_n_s_fixConsToMaster
#define __pyx_n_s_fixConssToBlock __pyx_mstate_global->__pyx_n_s_fixConssToBlock
#define __pyx_n_s_fixConssToBlockId __pyx_mstate_global->__pyx_n_s_fixConssToBlockId
#define __pyx_n_s_fixConssToMaster __pyx_mstate_global->__pyx_n_s_fixConssToMaster
#define __pyx_n_s_fixVarToLinking __pyx_mstate_global->__pyx_n_s_fixVarToLinking
#define __pyx_n_s_fixVarToMaster __pyx_mstate_global->__pyx_n_s_fixVarToMaster
#define __pyx_n_s_fixVarToStairlinking __pyx_mstate_global->__pyx_n_s_fixVarToStairlinking
#define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
#define __pyx_n_s_freeConsClassifier __pyx_mstate_global->__pyx_n_s_freeConsClassifier
#define __pyx_n_s_freeDetector __pyx_mstate_global->__pyx_n_s_freeDetector
#define __pyx_n_s_freeSolver __pyx_mstate_global->__pyx_n_s_freeSolver
#define __pyx_n_s_freeTemporaryData __pyx_mstate_global->__pyx_n_s_freeTemporaryData
#define __pyx_n_s_freeVarClassifier __pyx_mstate_global->__pyx_n_s_freeVarClassifier
#define __pyx_n_s_freqcallround __pyx_mstate_global->__pyx_n_s_freqcallround
#define __pyx_n_s_freqcallroundoriginal __pyx_mstate_global->__pyx_n_s_freqcallroundoriginal
#define __pyx_n_s_fromorig __pyx_mstate_global->__pyx_n_s_fromorig
#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
#define __pyx_n_s_gcg_col __pyx_mstate_global->__pyx_n_s_gcg_col
#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
#define __pyx_n_s_getAllSubsets __pyx_mstate_global->__pyx_n_s_getAllSubsets
#define __pyx_n_s_getAncestorID __pyx_mstate_global->__pyx_n_s_getAncestorID
#define __pyx_n_s_getAncestorList __pyx_mstate_global->__pyx_n_s_getAncestorList
#define __pyx_n_s_getAncestorPartialdec __pyx_mstate_global->__pyx_n_s_getAncestorPartialdec
#define __pyx_n_s_getBlocksForRep __pyx_mstate_global->__pyx_n_s_getBlocksForRep
#define __pyx_n_s_getClassDecompInfo __pyx_mstate_global->__pyx_n_s_getClassDecompInfo
#define __pyx_n_s_getClassDescription __pyx_mstate_global->__pyx_n_s_getClassDescription
#define __pyx_n_s_getClassName __pyx_mstate_global->__pyx_n_s_getClassName
#define __pyx_n_s_getClassNameOfCons __pyx_mstate_global->__pyx_n_s_getClassNameOfCons
#define __pyx_n_s_getClassNameOfVar __pyx_mstate_global->__pyx_n_s_getClassNameOfVar
#define __pyx_n_s_getClassOfCons __pyx_mstate_global->__pyx_n_s_getClassOfCons
#define __pyx_n_s_getClassOfVar __pyx_mstate_global->__pyx_n_s_getClassOfVar
#define __pyx_n_s_getCons __pyx_mstate_global->__pyx_n_s_getCons
#define __pyx_n_s_getConsPartition __pyx_mstate_global->__pyx_n_s_getConsPartition
#define __pyx_n_s_getConsPartitions __pyx_mstate_global->__pyx_n_s_getConsPartitions
#define __pyx_n_s_getConssForBlock __pyx_mstate_global->__pyx_n_s_getConssForBlock
#define __pyx_n_s_getConssForBlocks __pyx_mstate_global->__pyx_n_s_getConssForBlocks
#define __pyx_n_s_getConssForCons __pyx_mstate_global->__pyx_n_s_getConssForCons
#define __pyx_n_s_getConssForVar __pyx_mstate_global->__pyx_n_s_getConssForVar
#define __pyx_n_s_getDetectorClockTime __pyx_mstate_global->__pyx_n_s_getDetectorClockTime
#define __pyx_n_s_getDetectorClockTimes __pyx_mstate_global->__pyx_n_s_getDetectorClockTimes
#define __pyx_n_s_getDetectorchainInfo __pyx_mstate_global->__pyx_n_s_getDetectorchainInfo
#define __pyx_n_s_getDetprobdata __pyx_mstate_global->__pyx_n_s_getDetprobdata
#define __pyx_n_s_getDetprobdataOrig __pyx_mstate_global->__pyx_n_s_getDetprobdataOrig
#define __pyx_n_s_getDetprobdataPresolved __pyx_mstate_global->__pyx_n_s_getDetprobdataPresolved
#define __pyx_n_s_getDualbound __pyx_mstate_global->__pyx_n_s_getDualbound
#define __pyx_n_s_getFinishedByFinisher __pyx_mstate_global->__pyx_n_s_getFinishedByFinisher
#define __pyx_n_s_getFinishedPartialdec __pyx_mstate_global->__pyx_n_s_getFinishedPartialdec
#define __pyx_n_s_getFinishedPartialdecs __pyx_mstate_global->__pyx_n_s_getFinishedPartialdecs
#define __pyx_n_s_getHashValue __pyx_mstate_global->__pyx_n_s_getHashValue
#define __pyx_n_s_getID __pyx_mstate_global->__pyx_n_s_getID
#define __pyx_n_s_getIndexForCons __pyx_mstate_global->__pyx_n_s_getIndexForCons
#define __pyx_n_s_getIndexForVar __pyx_mstate_global->__pyx_n_s_getIndexForVar
#define __pyx_n_s_getLinkingvars __pyx_mstate_global->__pyx_n_s_getLinkingvars
#define __pyx_n_s_getMasterProb __pyx_mstate_global->__pyx_n_s_getMasterProb
#define __pyx_n_s_getMasterconss __pyx_mstate_global->__pyx_n_s_getMasterconss
#define __pyx_n_s_getMastervars __pyx_mstate_global->__pyx_n_s_getMastervars
#define __pyx_n_s_getModel __pyx_mstate_global->__pyx_n_s_getModel
#define __pyx_n_s_getNAncestorPartialdecs __pyx_mstate_global->__pyx_n_s_getNAncestorPartialdecs
#define __pyx_n_s_getNAncestors __pyx_mstate_global->__pyx_n_s_getNAncestors
#define __pyx_n_s_getNBlocks __pyx_mstate_global->__pyx_n_s_getNBlocks
#define __pyx_n_s_getNClasses __pyx_mstate_global->__pyx_n_s_getNClasses
#define __pyx_n_s_getNCoeffsForBlock __pyx_mstate_global->__pyx_n_s_getNCoeffsForBlock
#define __pyx_n_s_getNCoeffsForMaster __pyx_mstate_global->__pyx_n_s_getNCoeffsForMaster
#define __pyx_n_s_getNConsClassifiers __pyx_mstate_global->__pyx_n_s_getNConsClassifiers
#define __pyx_n_s_getNConsPartitions __pyx_mstate_global->__pyx_n_s_getNConsPartitions
#define __pyx_n_s_getNConss __pyx_mstate_global->__pyx_n_s_getNConss
#define __pyx_n_s_getNConssForBlock __pyx_mstate_global->__pyx_n_s_getNConssForBlock
#define __pyx_n_s_getNConssForCons __pyx_mstate_global->__pyx_n_s_getNConssForCons
#define __pyx_n_s_getNConssForVar __pyx_mstate_global->__pyx_n_s_getNConssForVar
#define __pyx_n_s_getNConssOfClasses __pyx_mstate_global->__pyx_n_s_getNConssOfClasses
#define __pyx_n_s_getNDetectors __pyx_mstate_global->__pyx_n_s_getNDetectors
#define __pyx_n_s_getNFinishedPartialdecs __pyx_mstate_global->__pyx_n_s_getNFinishedPartialdecs
#define __pyx_n_s_getNLinkingvars __pyx_mstate_global->__pyx_n_s_getNLinkingvars
#define __pyx_n_s_getNMasterconss __pyx_mstate_global->__pyx_n_s_getNMasterconss
#define __pyx_n_s_getNMastervars __pyx_mstate_global->__pyx_n_s_getNMastervars
#define __pyx_n_s_getNNewBlocks __pyx_mstate_global->__pyx_n_s_getNNewBlocks
#define __pyx_n_s_getNNewBlocksVector __pyx_mstate_global->__pyx_n_s_getNNewBlocksVector
#define __pyx_n_s_getNNonzeros __pyx_mstate_global->__pyx_n_s_getNNonzeros
#define __pyx_n_s_getNOpenPartialdecs __pyx_mstate_global->__pyx_n_s_getNOpenPartialdecs
#define __pyx_n_s_getNOpenconss __pyx_mstate_global->__pyx_n_s_getNOpenconss
#define __pyx_n_s_getNOpenvars __pyx_mstate_global->__pyx_n_s_getNOpenvars
#define __pyx_n_s_getNPartialdecs __pyx_mstate_global->__pyx_n_s_getNPartialdecs
#define __pyx_n_s_getNReps __pyx_mstate_global->__pyx_n_s_getNReps
#define __pyx_n_s_getNStairlinkingvars __pyx_mstate_global->__pyx_n_s_getNStairlinkingvars
#define __pyx_n_s_getNTotalStairlinkingvars __pyx_mstate_global->__pyx_n_s_getNTotalStairlinkingvars
#define __pyx_n_s_getNVarClassifiers __pyx_mstate_global->__pyx_n_s_getNVarClassifiers
#define __pyx_n_s_getNVarPartitions __pyx_mstate_global->__pyx_n_s_getNVarPartitions
#define __pyx_n_s_getNVars __pyx_mstate_global->__pyx_n_s_getNVars
#define __pyx_n_s_getNVarsForBlock __pyx_mstate_global->__pyx_n_s_getNVarsForBlock
#define __pyx_n_s_getNVarsForBlocks __pyx_mstate_global->__pyx_n_s_getNVarsForBlocks
#define __pyx_n_s_getNVarsForCons __pyx_mstate_global->__pyx_n_s_getNVarsForCons
#define __pyx_n_s_getNVarsOfClasses __pyx_mstate_global->__pyx_n_s_getNVarsOfClasses
#define __pyx_n_s_getName __pyx_mstate_global->__pyx_n_s_getName
#define __pyx_n_s_getOpenPartialdecs __pyx_mstate_global->__pyx_n_s_getOpenPartialdecs
#define __pyx_n_s_getOpenconss __pyx_mstate_global->__pyx_n_s_getOpenconss
#define __pyx_n_s_getOpenvars __pyx_mstate_global->__pyx_n_s_getOpenvars
#define __pyx_n_s_getOrigVarsFixedZero __pyx_mstate_global->__pyx_n_s_getOrigVarsFixedZero
#define __pyx_n_s_getOrigvars __pyx_mstate_global->__pyx_n_s_getOrigvars
#define __pyx_n_s_getPartDecompFromID __pyx_mstate_global->__pyx_n_s_getPartDecompFromID
#define __pyx_n_s_getPctConssFromFree __pyx_mstate_global->__pyx_n_s_getPctConssFromFree
#define __pyx_n_s_getPctConssFromFreeVector __pyx_mstate_global->__pyx_n_s_getPctConssFromFreeVector
#define __pyx_n_s_getPctConssToBlock __pyx_mstate_global->__pyx_n_s_getPctConssToBlock
#define __pyx_n_s_getPctConssToBlockVector __pyx_mstate_global->__pyx_n_s_getPctConssToBlockVector
#define __pyx_n_s_getPctConssToBorder __pyx_mstate_global->__pyx_n_s_getPctConssToBorder
#define __pyx_n_s_getPctConssToBorderVector __pyx_mstate_global->__pyx_n_s_getPctConssToBorderVector
#define __pyx_n_s_getPctVarsFromFree __pyx_mstate_global->__pyx_n_s_getPctVarsFromFree
#define __pyx_n_s_getPctVarsFromFreeVector __pyx_mstate_global->__pyx_n_s_getPctVarsFromFreeVector
#define __pyx_n_s_getPctVarsToBlock __pyx_mstate_global->__pyx_n_s_getPctVarsToBlock
#define __pyx_n_s_getPctVarsToBlockVector __pyx_mstate_global->__pyx_n_s_getPctVarsToBlockVector
#define __pyx_n_s_getPctVarsToBorder __pyx_mstate_global->__pyx_n_s_getPctVarsToBorder
#define __pyx_n_s_getPctVarsToBorderVector __pyx_mstate_global->__pyx_n_s_getPctVarsToBorderVector
#define __pyx_n_s_getRelevantConss __pyx_mstate_global->__pyx_n_s_getRelevantConss
#define __pyx_n_s_getRelevantVars __pyx_mstate_global->__pyx_n_s_getRelevantVars
#define __pyx_n_s_getRepForBlock __pyx_mstate_global->__pyx_n_s_getRepForBlock
#define __pyx_n_s_getRepVarmap __pyx_mstate_global->__pyx_n_s_getRepVarmap
#define __pyx_n_s_getScore __pyx_mstate_global->__pyx_n_s_getScore
#define __pyx_n_s_getSortedCandidatesNBlocks __pyx_mstate_global->__pyx_n_s_getSortedCandidatesNBlocks
#define __pyx_n_s_getStage __pyx_mstate_global->__pyx_n_s_getStage
#define __pyx_n_s_getTranslatedpartialdecid __pyx_mstate_global->__pyx_n_s_getTranslatedpartialdecid
#define __pyx_n_s_getUsergiven __pyx_mstate_global->__pyx_n_s_getUsergiven
#define __pyx_n_s_getVal __pyx_mstate_global->__pyx_n_s_getVal
#define __pyx_n_s_getValsForCons __pyx_mstate_global->__pyx_n_s_getValsForCons
#define __pyx_n_s_getVar __pyx_mstate_global->__pyx_n_s_getVar
#define __pyx_n_s_getVarPartition __pyx_mstate_global->__pyx_n_s_getVarPartition
#define __pyx_n_s_getVarPartitions __pyx_mstate_global->__pyx_n_s_getVarPartitions
#define __pyx_n_s_getVarProbindexForBlock __pyx_mstate_global->__pyx_n_s_getVarProbindexForBlock
#define __pyx_n_s_getVarsForBlock __pyx_mstate_global->__pyx_n_s_getVarsForBlock
#define __pyx_n_s_getVarsForCons __pyx_mstate_global->__pyx_n_s_getVarsForCons
#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
#define __pyx_n_s_hasSetppMaster __pyx_mstate_global->__pyx_n_s_hasSetppMaster
#define __pyx_n_s_hasSetppcMaster __pyx_mstate_global->__pyx_n_s_hasSetppcMaster
#define __pyx_n_s_hasSetppccardMaster __pyx_mstate_global->__pyx_n_s_hasSetppccardMaster
#define __pyx_n_s_heuristicEnabled __pyx_mstate_global->__pyx_n_s_heuristicEnabled
#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id
#define __pyx_n_s_idx __pyx_mstate_global->__pyx_n_s_idx
#define __pyx_n_s_ignoreDetectionLimits __pyx_mstate_global->__pyx_n_s_ignoreDetectionLimits
#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
#define __pyx_n_s_includeConsClassifier __pyx_mstate_global->__pyx_n_s_includeConsClassifier
#define __pyx_n_s_includeDefaultPlugins __pyx_mstate_global->__pyx_n_s_includeDefaultPlugins
#define __pyx_n_s_includeDetector __pyx_mstate_global->__pyx_n_s_includeDetector
#define __pyx_n_s_includePricingSolver __pyx_mstate_global->__pyx_n_s_includePricingSolver
#define __pyx_n_s_includeScore __pyx_mstate_global->__pyx_n_s_includeScore
#define __pyx_n_s_includeVarClassifier __pyx_mstate_global->__pyx_n_s_includeVarClassifier
#define __pyx_n_s_index __pyx_mstate_global->__pyx_n_s_index
#define __pyx_n_s_initDetector __pyx_mstate_global->__pyx_n_s_initDetector
#define __pyx_n_s_initSolution __pyx_mstate_global->__pyx_n_s_initSolution
#define __pyx_n_s_initSolver __pyx_mstate_global->__pyx_n_s_initSolver
#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
#define __pyx_n_s_isAssignedToOrigProb __pyx_mstate_global->__pyx_n_s_isAssignedToOrigProb
#define __pyx_n_s_isComplete __pyx_mstate_global->__pyx_n_s_isComplete
#define __pyx_n_s_isConsCardinalityCons __pyx_mstate_global->__pyx_n_s_isConsCardinalityCons
#define __pyx_n_s_isConsClassified __pyx_mstate_global->__pyx_n_s_isConsClassified
#define __pyx_n_s_isConsMastercons __pyx_mstate_global->__pyx_n_s_isConsMastercons
#define __pyx_n_s_isConsOpencons __pyx_mstate_global->__pyx_n_s_isConsOpencons
#define __pyx_n_s_isConsSetpp __pyx_mstate_global->__pyx_n_s_isConsSetpp
#define __pyx_n_s_isConsSetppc __pyx_mstate_global->__pyx_n_s_isConsSetppc
#define __pyx_n_s_isConssAdjInitialized __pyx_mstate_global->__pyx_n_s_isConssAdjInitialized
#define __pyx_n_s_isPartialdecDuplicateofFinished __pyx_mstate_global->__pyx_n_s_isPartialdecDuplicateofFinished
#define __pyx_n_s_isTrivial __pyx_mstate_global->__pyx_n_s_isTrivial
#define __pyx_n_s_isVarBlockvarOfBlock __pyx_mstate_global->__pyx_n_s_isVarBlockvarOfBlock
#define __pyx_n_s_isVarClassified __pyx_mstate_global->__pyx_n_s_isVarClassified
#define __pyx_n_s_isVarLinkingvar __pyx_mstate_global->__pyx_n_s_isVarLinkingvar
#define __pyx_n_s_isVarMastervar __pyx_mstate_global->__pyx_n_s_isVarMastervar
#define __pyx_n_s_isVarOpenvar __pyx_mstate_global->__pyx_n_s_isVarOpenvar
#define __pyx_n_s_isVarStairlinkingvar __pyx_mstate_global->__pyx_n_s_isVarStairlinkingvar
#define __pyx_n_s_isVarStairlinkingvarOfBlock __pyx_mstate_global->__pyx_n_s_isVarStairlinkingvarOfBlock
#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
#define __pyx_n_s_is_enabled __pyx_mstate_global->__pyx_n_s_is_enabled
#define __pyx_kp_u_is_not_supported_Only_svg_and_p __pyx_mstate_global->__pyx_kp_u_is_not_supported_Only_svg_and_p
#define __pyx_n_s_is_presolved __pyx_mstate_global->__pyx_n_s_is_presolved
#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
#define __pyx_n_s_isray __pyx_mstate_global->__pyx_n_s_isray
#define __pyx_n_s_joinpath __pyx_mstate_global->__pyx_n_s_joinpath
#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
#define __pyx_n_s_linking __pyx_mstate_global->__pyx_n_s_linking
#define __pyx_n_s_listConsClassifiers __pyx_mstate_global->__pyx_n_s_listConsClassifiers
#define __pyx_n_s_listDecompositions __pyx_mstate_global->__pyx_n_s_listDecompositions
#define __pyx_n_s_listDetectors __pyx_mstate_global->__pyx_n_s_listDetectors
#define __pyx_n_s_listPricingSolvers __pyx_mstate_global->__pyx_n_s_listPricingSolvers
#define __pyx_n_s_listScores __pyx_mstate_global->__pyx_n_s_listScores
#define __pyx_n_s_listVarClassifiers __pyx_mstate_global->__pyx_n_s_listVarClassifiers
#define __pyx_n_s_lower __pyx_mstate_global->__pyx_n_s_lower
#define __pyx_n_u_lowerbound __pyx_mstate_global->__pyx_n_u_lowerbound
#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
#define __pyx_n_s_master __pyx_mstate_global->__pyx_n_s_master
#define __pyx_n_s_master_conss __pyx_mstate_global->__pyx_n_s_master_conss
#define __pyx_n_s_master_prob __pyx_mstate_global->__pyx_n_s_master_prob
#define __pyx_n_s_mastervars __pyx_mstate_global->__pyx_n_s_mastervars
#define __pyx_kp_u_maxForWhiteScore __pyx_mstate_global->__pyx_kp_u_maxForWhiteScore
#define __pyx_n_s_maxForWhiteScore_2 __pyx_mstate_global->__pyx_n_s_maxForWhiteScore_2
#define __pyx_n_s_maxNumberOfClasses __pyx_mstate_global->__pyx_n_s_maxNumberOfClasses
#define __pyx_kp_u_max_foreseeing_white __pyx_mstate_global->__pyx_kp_u_max_foreseeing_white
#define __pyx_kp_u_max_foreseeing_white_with_aggreg __pyx_mstate_global->__pyx_kp_u_max_foreseeing_white_with_aggreg
#define __pyx_n_s_maxcallround __pyx_mstate_global->__pyx_n_s_maxcallround
#define __pyx_n_s_maxcallroundoriginal __pyx_mstate_global->__pyx_n_s_maxcallroundoriginal
#define __pyx_n_s_mincallround __pyx_mstate_global->__pyx_n_s_mincallround
#define __pyx_n_s_mincallroundoriginal __pyx_mstate_global->__pyx_n_s_mincallroundoriginal
#define __pyx_n_s_mkdir __pyx_mstate_global->__pyx_n_s_mkdir
#define __pyx_n_s_mp __pyx_mstate_global->__pyx_n_s_mp
#define __pyx_kp_u_nLinkingVars __pyx_mstate_global->__pyx_kp_u_nLinkingVars
#define __pyx_kp_u_nMasterConss __pyx_mstate_global->__pyx_kp_u_nMasterConss
#define __pyx_kp_u_nMasterVars __pyx_mstate_global->__pyx_kp_u_nMasterVars
#define __pyx_n_s_n_consclassifiers __pyx_mstate_global->__pyx_n_s_n_consclassifiers
#define __pyx_n_s_n_detectors __pyx_mstate_global->__pyx_n_s_n_detectors
#define __pyx_n_s_n_pricing_solvers __pyx_mstate_global->__pyx_n_s_n_pricing_solvers
#define __pyx_n_s_n_scores __pyx_mstate_global->__pyx_n_s_n_scores
#define __pyx_n_s_n_varclassifiers __pyx_mstate_global->__pyx_n_s_n_varclassifiers
#define __pyx_n_s_n_vars __pyx_mstate_global->__pyx_n_s_n_vars
#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2
#define __pyx_n_s_nblocks __pyx_mstate_global->__pyx_n_s_nblocks
#define __pyx_n_s_nblockscandidatescalctime __pyx_mstate_global->__pyx_n_s_nblockscandidatescalctime
#define __pyx_n_s_nclasses __pyx_mstate_global->__pyx_n_s_nclasses
#define __pyx_n_s_ncons __pyx_mstate_global->__pyx_n_s_ncons
#define __pyx_n_s_nconsparts __pyx_mstate_global->__pyx_n_s_nconsparts
#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
#define __pyx_n_s_newlist __pyx_mstate_global->__pyx_n_s_newlist
#define __pyx_n_u_newpartialdecs __pyx_mstate_global->__pyx_n_u_newpartialdecs
#define __pyx_n_s_newvector __pyx_mstate_global->__pyx_n_s_newvector
#define __pyx_n_s_nnewblocks __pyx_mstate_global->__pyx_n_s_nnewblocks
#define __pyx_kp_s_no_default___reduce___due_to_non __pyx_mstate_global->__pyx_kp_s_no_default___reduce___due_to_non
#define __pyx_n_s_npartialdecs __pyx_mstate_global->__pyx_n_s_npartialdecs
#define __pyx_n_s_nvars __pyx_mstate_global->__pyx_n_s_nvars
#define __pyx_n_s_nvotes __pyx_mstate_global->__pyx_n_s_nvotes
#define __pyx_n_s_only_master __pyx_mstate_global->__pyx_n_s_only_master
#define __pyx_n_s_only_pricing __pyx_mstate_global->__pyx_n_s_only_pricing
#define __pyx_n_s_optimize __pyx_mstate_global->__pyx_n_s_optimize
#define __pyx_n_s_original __pyx_mstate_global->__pyx_n_s_original
#define __pyx_n_s_originalvars __pyx_mstate_global->__pyx_n_s_originalvars
#define __pyx_n_s_otherdata __pyx_mstate_global->__pyx_n_s_otherdata
#define __pyx_n_s_otherpartialdec __pyx_mstate_global->__pyx_n_s_otherpartialdec
#define __pyx_n_s_otherpartialdecs __pyx_mstate_global->__pyx_n_s_otherpartialdecs
#define __pyx_n_s_otherpartialdecs_element __pyx_mstate_global->__pyx_n_s_otherpartialdecs_element
#define __pyx_n_s_otherpartialdecs_ptr __pyx_mstate_global->__pyx_n_s_otherpartialdecs_ptr
#define __pyx_n_s_parents __pyx_mstate_global->__pyx_n_s_parents
#define __pyx_n_s_partialdec __pyx_mstate_global->__pyx_n_s_partialdec
#define __pyx_n_s_partialdecIsNoDuplicateOfPartial __pyx_mstate_global->__pyx_n_s_partialdecIsNoDuplicateOfPartial
#define __pyx_n_s_partialdecindex __pyx_mstate_global->__pyx_n_s_partialdecindex
#define __pyx_n_s_partialdecs __pyx_mstate_global->__pyx_n_s_partialdecs
#define __pyx_n_s_partialdecs_element __pyx_mstate_global->__pyx_n_s_partialdecs_element
#define __pyx_n_s_partialdecs_ptr __pyx_mstate_global->__pyx_n_s_partialdecs_ptr
#define __pyx_n_s_partition __pyx_mstate_global->__pyx_n_s_partition
#define __pyx_n_s_partitionIndex __pyx_mstate_global->__pyx_n_s_partitionIndex
#define __pyx_n_s_pathlib __pyx_mstate_global->__pyx_n_s_pathlib
#define __pyx_n_s_pct __pyx_mstate_global->__pyx_n_s_pct
#define __pyx_n_s_pd __pyx_mstate_global->__pyx_n_s_pd
#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
#define __pyx_n_u_png __pyx_mstate_global->__pyx_n_u_png
#define __pyx_n_s_postprocessPartialdec __pyx_mstate_global->__pyx_n_s_postprocessPartialdec
#define __pyx_n_s_postprocessingtime __pyx_mstate_global->__pyx_n_s_postprocessingtime
#define __pyx_kp_u_ppc_max_white __pyx_mstate_global->__pyx_kp_u_ppc_max_white
#define __pyx_kp_u_ppc_max_white_with_aggregation_i __pyx_mstate_global->__pyx_kp_u_ppc_max_white_with_aggregation_i
#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare
#define __pyx_n_s_presolve __pyx_mstate_global->__pyx_n_s_presolve
#define __pyx_n_s_presolved __pyx_mstate_global->__pyx_n_s_presolved
#define __pyx_n_s_pricingSolver __pyx_mstate_global->__pyx_n_s_pricingSolver
#define __pyx_n_s_pricing_solver_name __pyx_mstate_global->__pyx_n_s_pricing_solver_name
#define __pyx_n_s_pricing_solvers __pyx_mstate_global->__pyx_n_s_pricing_solvers
#define __pyx_n_s_pricingprob __pyx_mstate_global->__pyx_n_s_pricingprob
#define __pyx_kp_u_pricingsolver_exactenabled __pyx_mstate_global->__pyx_kp_u_pricingsolver_exactenabled
#define __pyx_kp_u_pricingsolver_heurenabled __pyx_mstate_global->__pyx_kp_u_pricingsolver_heurenabled
#define __pyx_n_s_print __pyx_mstate_global->__pyx_n_s_print
#define __pyx_n_s_printStatistics __pyx_mstate_global->__pyx_n_s_printStatistics
#define __pyx_n_s_printVersion __pyx_mstate_global->__pyx_n_s_printVersion
#define __pyx_n_s_priority __pyx_mstate_global->__pyx_n_s_priority
#define __pyx_n_s_probnr __pyx_mstate_global->__pyx_n_s_probnr
#define __pyx_n_s_propagatePartialdec __pyx_mstate_global->__pyx_n_s_propagatePartialdec
#define __pyx_n_s_proxy __pyx_mstate_global->__pyx_n_s_proxy
#define __pyx_n_s_pyGCGCol __pyx_mstate_global->__pyx_n_s_pyGCGCol
#define __pyx_n_s_pyVar __pyx_mstate_global->__pyx_n_s_pyVar
#define __pyx_n_s_pygcgopt_gcg __pyx_mstate_global->__pyx_n_s_pygcgopt_gcg
#define __pyx_n_s_pygcgopt_util __pyx_mstate_global->__pyx_n_s_pygcgopt_util
#define __pyx_n_s_pyscipopt_scip __pyx_mstate_global->__pyx_n_s_pyscipopt_scip
#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
#define __pyx_n_s_pyx_checksum __pyx_mstate_global->__pyx_n_s_pyx_checksum
#define __pyx_n_s_pyx_result __pyx_mstate_global->__pyx_n_s_pyx_result
#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
#define __pyx_n_s_pyx_type __pyx_mstate_global->__pyx_n_s_pyx_type
#define __pyx_n_s_pyx_unpickle_ConsClassifier __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ConsClassifier
#define __pyx_n_s_pyx_unpickle_Detector __pyx_mstate_global->__pyx_n_s_pyx_unpickle_Detector
#define __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF
#define __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA
#define __pyx_n_s_pyx_unpickle_PY_USERGIVEN __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PY_USERGIVEN
#define __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO
#define __pyx_n_s_pyx_unpickle_PricingSolver __pyx_mstate_global->__pyx_n_s_pyx_unpickle_PricingSolver
#define __pyx_n_s_pyx_unpickle_Score __pyx_mstate_global->__pyx_n_s_pyx_unpickle_Score
#define __pyx_n_s_pyx_unpickle_VarClassifier __pyx_mstate_global->__pyx_n_s_pyx_unpickle_VarClassifier
#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
#define __pyx_n_s_r __pyx_mstate_global->__pyx_n_s_r
#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
#define __pyx_n_s_read_bytes __pyx_mstate_global->__pyx_n_s_read_bytes
#define __pyx_n_s_read_text __pyx_mstate_global->__pyx_n_s_read_text
#define __pyx_n_s_redcost __pyx_mstate_global->__pyx_n_s_redcost
#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
#define __pyx_n_s_reduceClasses __pyx_mstate_global->__pyx_n_s_reduceClasses
#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
#define __pyx_n_s_refineToBlocks __pyx_mstate_global->__pyx_n_s_refineToBlocks
#define __pyx_n_s_refineToMaster __pyx_mstate_global->__pyx_n_s_refineToMaster
#define __pyx_n_s_removeAncestorID __pyx_mstate_global->__pyx_n_s_removeAncestorID
#define __pyx_n_s_removeEmptyClasses __pyx_mstate_global->__pyx_n_s_removeEmptyClasses
#define __pyx_n_s_removeMastercons __pyx_mstate_global->__pyx_n_s_removeMastercons
#define __pyx_n_s_rep_id __pyx_mstate_global->__pyx_n_s_rep_id
#define __pyx_n_s_repid __pyx_mstate_global->__pyx_n_s_repid
#define __pyx_n_s_repr_png __pyx_mstate_global->__pyx_n_s_repr_png
#define __pyx_n_s_repr_svg __pyx_mstate_global->__pyx_n_s_repr_svg
#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result
#define __pyx_n_u_result __pyx_mstate_global->__pyx_n_u_result
#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row
#define __pyx_n_s_scip __pyx_mstate_global->__pyx_n_s_scip
#define __pyx_n_s_score __pyx_mstate_global->__pyx_n_s_score
#define __pyx_n_s_scorecalculate __pyx_mstate_global->__pyx_n_s_scorecalculate
#define __pyx_n_s_scorefree __pyx_mstate_global->__pyx_n_s_scorefree
#define __pyx_n_s_scorename __pyx_mstate_global->__pyx_n_s_scorename
#define __pyx_n_s_scores __pyx_mstate_global->__pyx_n_s_scores
#define __pyx_n_u_scorevalue __pyx_mstate_global->__pyx_n_u_scorevalue
#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
#define __pyx_kp_s_self__scip_self__valid_cannot_be __pyx_mstate_global->__pyx_kp_s_self__scip_self__valid_cannot_be
#define __pyx_kp_s_self_consPartition_cannot_be_con __pyx_mstate_global->__pyx_kp_s_self_consPartition_cannot_be_con
#define __pyx_kp_s_self_gcg_col_cannot_be_converted __pyx_mstate_global->__pyx_kp_s_self_gcg_col_cannot_be_converted
#define __pyx_kp_s_self_thisptr_cannot_be_converted __pyx_mstate_global->__pyx_kp_s_self_thisptr_cannot_be_converted
#define __pyx_kp_s_self_varPartition_cannot_be_conv __pyx_mstate_global->__pyx_kp_s_self_varPartition_cannot_be_conv
#define __pyx_n_s_setAncestorList __pyx_mstate_global->__pyx_n_s_setAncestorList
#define __pyx_n_s_setBoolParam __pyx_mstate_global->__pyx_n_s_setBoolParam
#define __pyx_n_s_setClassDecompInfo __pyx_mstate_global->__pyx_n_s_setClassDecompInfo
#define __pyx_n_s_setClassDescription __pyx_mstate_global->__pyx_n_s_setClassDescription
#define __pyx_n_s_setClassName __pyx_mstate_global->__pyx_n_s_setClassName
#define __pyx_n_s_setConsPartitionStatistics __pyx_mstate_global->__pyx_n_s_setConsPartitionStatistics
#define __pyx_n_s_setConsToMaster __pyx_mstate_global->__pyx_n_s_setConsToMaster
#define __pyx_n_s_setDetectorClockTimes __pyx_mstate_global->__pyx_n_s_setDetectorClockTimes
#define __pyx_n_s_setDetectorEnabled __pyx_mstate_global->__pyx_n_s_setDetectorEnabled
#define __pyx_n_s_setDetectorFinished __pyx_mstate_global->__pyx_n_s_setDetectorFinished
#define __pyx_n_s_setDetectorFinishedOrig __pyx_mstate_global->__pyx_n_s_setDetectorFinishedOrig
#define __pyx_n_s_setDetectorFinishingEnabled __pyx_mstate_global->__pyx_n_s_setDetectorFinishingEnabled
#define __pyx_n_s_setDetectorPostprocessingEnabled __pyx_mstate_global->__pyx_n_s_setDetectorPostprocessingEnabled
#define __pyx_n_s_setDetectorPropagated __pyx_mstate_global->__pyx_n_s_setDetectorPropagated
#define __pyx_n_s_setFinishedByFinisher __pyx_mstate_global->__pyx_n_s_setFinishedByFinisher
#define __pyx_n_s_setFinishedByFinisherOrig __pyx_mstate_global->__pyx_n_s_setFinishedByFinisherOrig
#define __pyx_n_s_setGCGSeparating __pyx_mstate_global->__pyx_n_s_setGCGSeparating
#define __pyx_n_s_setNBlocks __pyx_mstate_global->__pyx_n_s_setNBlocks
#define __pyx_n_s_setParamAggressive __pyx_mstate_global->__pyx_n_s_setParamAggressive
#define __pyx_n_s_setParamDefault __pyx_mstate_global->__pyx_n_s_setParamDefault
#define __pyx_n_s_setParamFast __pyx_mstate_global->__pyx_n_s_setParamFast
#define __pyx_n_s_setPctConssFromFreeVector __pyx_mstate_global->__pyx_n_s_setPctConssFromFreeVector
#define __pyx_n_s_setPctConssToBlockVector __pyx_mstate_global->__pyx_n_s_setPctConssToBlockVector
#define __pyx_n_s_setPctConssToBorderVector __pyx_mstate_global->__pyx_n_s_setPctConssToBorderVector
#define __pyx_n_s_setPctVarsFromFreeVector __pyx_mstate_global->__pyx_n_s_setPctVarsFromFreeVector
#define __pyx_n_s_setPctVarsToBlockVector __pyx_mstate_global->__pyx_n_s_setPctVarsToBlockVector
#define __pyx_n_s_setPctVarsToBorderVector __pyx_mstate_global->__pyx_n_s_setPctVarsToBorderVector
#define __pyx_n_s_setPricingSolverEnabled __pyx_mstate_global->__pyx_n_s_setPricingSolverEnabled
#define __pyx_n_s_setPricingSolverExactEnabled __pyx_mstate_global->__pyx_n_s_setPricingSolverExactEnabled
#define __pyx_n_s_setPricingSolverHeuristicEnabled __pyx_mstate_global->__pyx_n_s_setPricingSolverHeuristicEnabled
#define __pyx_n_s_setStemsFromOrig __pyx_mstate_global->__pyx_n_s_setStemsFromOrig
#define __pyx_n_s_setTranslatedpartialdecid __pyx_mstate_global->__pyx_n_s_setTranslatedpartialdecid
#define __pyx_n_s_setUsergiven __pyx_mstate_global->__pyx_n_s_setUsergiven
#define __pyx_n_s_setVarClassifierEnabled __pyx_mstate_global->__pyx_n_s_setVarClassifierEnabled
#define __pyx_n_s_setVarPartitionStatistics __pyx_mstate_global->__pyx_n_s_setVarPartitionStatistics
#define __pyx_n_s_setVarToBlockId __pyx_mstate_global->__pyx_n_s_setVarToBlockId
#define __pyx_n_s_setVarToLinking __pyx_mstate_global->__pyx_n_s_setVarToLinking
#define __pyx_n_s_setVarToMaster __pyx_mstate_global->__pyx_n_s_setVarToMaster
#define __pyx_n_s_setVarToStairlinking __pyx_mstate_global->__pyx_n_s_setVarToStairlinking
#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
#define __pyx_n_s_setting __pyx_mstate_global->__pyx_n_s_setting
#define __pyx_n_s_shortname __pyx_mstate_global->__pyx_n_s_shortname
#define __pyx_n_s_shouldCompletedByConsToMaster __pyx_mstate_global->__pyx_n_s_shouldCompletedByConsToMaster
#define __pyx_n_s_showVisualization __pyx_mstate_global->__pyx_n_s_showVisualization
#define __pyx_n_s_skip __pyx_mstate_global->__pyx_n_s_skip
#define __pyx_n_s_solve __pyx_mstate_global->__pyx_n_s_solve
#define __pyx_n_s_solveHeuristic __pyx_mstate_global->__pyx_n_s_solveHeuristic
#define __pyx_n_s_solvername __pyx_mstate_global->__pyx_n_s_solvername
#define __pyx_n_s_sort __pyx_mstate_global->__pyx_n_s_sort
#define __pyx_n_s_sortFinishedForScore __pyx_mstate_global->__pyx_n_s_sortFinishedForScore
#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
#define __pyx_kp_s_src_pygcgopt_consclassifier_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_consclassifier_pxi
#define __pyx_kp_s_src_pygcgopt_decomposition_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_decomposition_pxi
#define __pyx_kp_s_src_pygcgopt_detector_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_detector_pxi
#define __pyx_kp_s_src_pygcgopt_detprobdata_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_detprobdata_pxi
#define __pyx_kp_s_src_pygcgopt_gcg_pyx __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_gcg_pyx
#define __pyx_kp_s_src_pygcgopt_partition_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_partition_pxi
#define __pyx_kp_s_src_pygcgopt_pricing_solver_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_pricing_solver_pxi
#define __pyx_kp_s_src_pygcgopt_score_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_score_pxi
#define __pyx_kp_s_src_pygcgopt_varclassifier_pxi __pyx_mstate_global->__pyx_kp_s_src_pygcgopt_varclassifier_pxi
#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
#define __pyx_n_u_status __pyx_mstate_global->__pyx_n_u_status
#define __pyx_n_s_str_conversion __pyx_mstate_global->__pyx_n_s_str_conversion
#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
#define __pyx_kp_u_strong_decomposition_score __pyx_mstate_global->__pyx_kp_u_strong_decomposition_score
#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super
#define __pyx_n_u_svg __pyx_mstate_global->__pyx_n_u_svg
#define __pyx_n_s_tempfile __pyx_mstate_global->__pyx_n_s_tempfile
#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
#define __pyx_n_s_translatePartialdecs __pyx_mstate_global->__pyx_n_s_translatePartialdecs
#define __pyx_n_s_translatingtime __pyx_mstate_global->__pyx_n_s_translatingtime
#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing
#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
#define __pyx_n_s_updateSolver __pyx_mstate_global->__pyx_n_s_updateSolver
#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate
#define __pyx_n_s_usefulrecall __pyx_mstate_global->__pyx_n_s_usefulrecall
#define __pyx_n_s_v __pyx_mstate_global->__pyx_n_s_v
#define __pyx_n_s_vals __pyx_mstate_global->__pyx_n_s_vals
#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value
#define __pyx_n_s_var __pyx_mstate_global->__pyx_n_s_var
#define __pyx_n_s_varIndex __pyx_mstate_global->__pyx_n_s_varIndex
#define __pyx_n_s_varbndschanged __pyx_mstate_global->__pyx_n_s_varbndschanged
#define __pyx_n_s_varclasseslinking __pyx_mstate_global->__pyx_n_s_varclasseslinking
#define __pyx_n_s_varclassesmaster __pyx_mstate_global->__pyx_n_s_varclassesmaster
#define __pyx_n_s_varclassifier __pyx_mstate_global->__pyx_n_s_varclassifier
#define __pyx_n_s_varclassifier_name __pyx_mstate_global->__pyx_n_s_varclassifier_name
#define __pyx_n_s_varclassifiername __pyx_mstate_global->__pyx_n_s_varclassifiername
#define __pyx_n_s_varclassifiers __pyx_mstate_global->__pyx_n_s_varclassifiers
#define __pyx_n_s_variables __pyx_mstate_global->__pyx_n_s_variables
#define __pyx_n_s_varid __pyx_mstate_global->__pyx_n_s_varid
#define __pyx_n_s_varobjschanged __pyx_mstate_global->__pyx_n_s_varobjschanged
#define __pyx_n_s_varpartitioncollection __pyx_mstate_global->__pyx_n_s_varpartitioncollection
#define __pyx_n_s_varpartitioncollection_element __pyx_mstate_global->__pyx_n_s_varpartitioncollection_element
#define __pyx_n_s_varpartitioncollection_ptr __pyx_mstate_global->__pyx_n_s_varpartitioncollection_ptr
#define __pyx_n_s_varpatitionptr __pyx_mstate_global->__pyx_n_s_varpatitionptr
#define __pyx_n_s_vars __pyx_mstate_global->__pyx_n_s_vars
#define __pyx_n_u_vis __pyx_mstate_global->__pyx_n_u_vis
#define __pyx_kp_u_vis_gp __pyx_mstate_global->__pyx_kp_u_vis_gp
#define __pyx_n_s_weakref __pyx_mstate_global->__pyx_n_s_weakref
#define __pyx_n_s_with_suffix __pyx_mstate_global->__pyx_n_s_with_suffix
#define __pyx_n_s_workonpartialdec __pyx_mstate_global->__pyx_n_s_workonpartialdec
#define __pyx_n_s_writeAllDecomps __pyx_mstate_global->__pyx_n_s_writeAllDecomps
#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
#define __pyx_int_24087813 __pyx_mstate_global->__pyx_int_24087813
#define __pyx_int_37557029 __pyx_mstate_global->__pyx_int_37557029
#define __pyx_int_76513566 __pyx_mstate_global->__pyx_int_76513566
#define __pyx_int_104261058 __pyx_mstate_global->__pyx_int_104261058
#define __pyx_int_108959872 __pyx_mstate_global->__pyx_int_108959872
#define __pyx_int_128380825 __pyx_mstate_global->__pyx_int_128380825
#define __pyx_int_141772857 __pyx_mstate_global->__pyx_int_141772857
#define __pyx_int_160002037 __pyx_mstate_global->__pyx_int_160002037
#define __pyx_int_193403919 __pyx_mstate_global->__pyx_int_193403919
#define __pyx_int_222419149 __pyx_mstate_global->__pyx_int_222419149
#define __pyx_int_228825662 __pyx_mstate_global->__pyx_int_228825662
#define __pyx_int_229442799 __pyx_mstate_global->__pyx_int_229442799
#define __pyx_int_238750788 __pyx_mstate_global->__pyx_int_238750788
#define __pyx_int_248330301 __pyx_mstate_global->__pyx_int_248330301
#define __pyx_int_260020090 __pyx_mstate_global->__pyx_int_260020090
#define __pyx_k__5 __pyx_mstate_global->__pyx_k__5
#define __pyx_k__10 __pyx_mstate_global->__pyx_k__10
#define __pyx_k__11 __pyx_mstate_global->__pyx_k__11
#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_
#define __pyx_tuple__2 __pyx_mstate_global->__pyx_tuple__2
#define __pyx_tuple__3 __pyx_mstate_global->__pyx_tuple__3
#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15
#define __pyx_tuple__16 __pyx_mstate_global->__pyx_tuple__16
#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17
#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19
#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25
#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32
#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34
#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41
#define __pyx_tuple__43 __pyx_mstate_global->__pyx_tuple__43
#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49
#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53
#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59
#define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61
#define __pyx_tuple__63 __pyx_mstate_global->__pyx_tuple__63
#define __pyx_tuple__65 __pyx_mstate_global->__pyx_tuple__65
#define __pyx_tuple__67 __pyx_mstate_global->__pyx_tuple__67
#define __pyx_tuple__70 __pyx_mstate_global->__pyx_tuple__70
#define __pyx_tuple__76 __pyx_mstate_global->__pyx_tuple__76
#define __pyx_tuple__78 __pyx_mstate_global->__pyx_tuple__78
#define __pyx_tuple__90 __pyx_mstate_global->__pyx_tuple__90
#define __pyx_tuple__92 __pyx_mstate_global->__pyx_tuple__92
#define __pyx_tuple__95 __pyx_mstate_global->__pyx_tuple__95
#define __pyx_tuple__107 __pyx_mstate_global->__pyx_tuple__107
#define __pyx_tuple__118 __pyx_mstate_global->__pyx_tuple__118
#define __pyx_tuple__120 __pyx_mstate_global->__pyx_tuple__120
#define __pyx_tuple__122 __pyx_mstate_global->__pyx_tuple__122
#define __pyx_tuple__124 __pyx_mstate_global->__pyx_tuple__124
#define __pyx_tuple__126 __pyx_mstate_global->__pyx_tuple__126
#define __pyx_tuple__128 __pyx_mstate_global->__pyx_tuple__128
#define __pyx_tuple__134 __pyx_mstate_global->__pyx_tuple__134
#define __pyx_tuple__137 __pyx_mstate_global->__pyx_tuple__137
#define __pyx_tuple__145 __pyx_mstate_global->__pyx_tuple__145
#define __pyx_tuple__147 __pyx_mstate_global->__pyx_tuple__147
#define __pyx_tuple__149 __pyx_mstate_global->__pyx_tuple__149
#define __pyx_tuple__152 __pyx_mstate_global->__pyx_tuple__152
#define __pyx_tuple__154 __pyx_mstate_global->__pyx_tuple__154
#define __pyx_tuple__156 __pyx_mstate_global->__pyx_tuple__156
#define __pyx_tuple__158 __pyx_mstate_global->__pyx_tuple__158
#define __pyx_tuple__163 __pyx_mstate_global->__pyx_tuple__163
#define __pyx_tuple__165 __pyx_mstate_global->__pyx_tuple__165
#define __pyx_tuple__167 __pyx_mstate_global->__pyx_tuple__167
#define __pyx_tuple__170 __pyx_mstate_global->__pyx_tuple__170
#define __pyx_tuple__172 __pyx_mstate_global->__pyx_tuple__172
#define __pyx_tuple__180 __pyx_mstate_global->__pyx_tuple__180
#define __pyx_tuple__183 __pyx_mstate_global->__pyx_tuple__183
#define __pyx_tuple__185 __pyx_mstate_global->__pyx_tuple__185
#define __pyx_tuple__192 __pyx_mstate_global->__pyx_tuple__192
#define __pyx_tuple__205 __pyx_mstate_global->__pyx_tuple__205
#define __pyx_tuple__219 __pyx_mstate_global->__pyx_tuple__219
#define __pyx_tuple__225 __pyx_mstate_global->__pyx_tuple__225
#define __pyx_tuple__227 __pyx_mstate_global->__pyx_tuple__227
#define __pyx_tuple__238 __pyx_mstate_global->__pyx_tuple__238
#define __pyx_tuple__242 __pyx_mstate_global->__pyx_tuple__242
#define __pyx_tuple__245 __pyx_mstate_global->__pyx_tuple__245
#define __pyx_tuple__247 __pyx_mstate_global->__pyx_tuple__247
#define __pyx_tuple__249 __pyx_mstate_global->__pyx_tuple__249
#define __pyx_tuple__251 __pyx_mstate_global->__pyx_tuple__251
#define __pyx_tuple__253 __pyx_mstate_global->__pyx_tuple__253
#define __pyx_tuple__255 __pyx_mstate_global->__pyx_tuple__255
#define __pyx_tuple__257 __pyx_mstate_global->__pyx_tuple__257
#define __pyx_tuple__260 __pyx_mstate_global->__pyx_tuple__260
#define __pyx_tuple__264 __pyx_mstate_global->__pyx_tuple__264
#define __pyx_tuple__269 __pyx_mstate_global->__pyx_tuple__269
#define __pyx_tuple__271 __pyx_mstate_global->__pyx_tuple__271
#define __pyx_tuple__273 __pyx_mstate_global->__pyx_tuple__273
#define __pyx_tuple__277 __pyx_mstate_global->__pyx_tuple__277
#define __pyx_tuple__286 __pyx_mstate_global->__pyx_tuple__286
#define __pyx_tuple__293 __pyx_mstate_global->__pyx_tuple__293
#define __pyx_tuple__296 __pyx_mstate_global->__pyx_tuple__296
#define __pyx_tuple__298 __pyx_mstate_global->__pyx_tuple__298
#define __pyx_tuple__300 __pyx_mstate_global->__pyx_tuple__300
#define __pyx_tuple__302 __pyx_mstate_global->__pyx_tuple__302
#define __pyx_tuple__306 __pyx_mstate_global->__pyx_tuple__306
#define __pyx_tuple__308 __pyx_mstate_global->__pyx_tuple__308
#define __pyx_tuple__311 __pyx_mstate_global->__pyx_tuple__311
#define __pyx_tuple__313 __pyx_mstate_global->__pyx_tuple__313
#define __pyx_tuple__315 __pyx_mstate_global->__pyx_tuple__315
#define __pyx_tuple__318 __pyx_mstate_global->__pyx_tuple__318
#define __pyx_tuple__321 __pyx_mstate_global->__pyx_tuple__321
#define __pyx_tuple__324 __pyx_mstate_global->__pyx_tuple__324
#define __pyx_tuple__327 __pyx_mstate_global->__pyx_tuple__327
#define __pyx_tuple__330 __pyx_mstate_global->__pyx_tuple__330
#define __pyx_tuple__332 __pyx_mstate_global->__pyx_tuple__332
#define __pyx_tuple__334 __pyx_mstate_global->__pyx_tuple__334
#define __pyx_tuple__336 __pyx_mstate_global->__pyx_tuple__336
#define __pyx_tuple__347 __pyx_mstate_global->__pyx_tuple__347
#define __pyx_tuple__349 __pyx_mstate_global->__pyx_tuple__349
#define __pyx_tuple__351 __pyx_mstate_global->__pyx_tuple__351
#define __pyx_tuple__353 __pyx_mstate_global->__pyx_tuple__353
#define __pyx_tuple__356 __pyx_mstate_global->__pyx_tuple__356
#define __pyx_tuple__362 __pyx_mstate_global->__pyx_tuple__362
#define __pyx_tuple__376 __pyx_mstate_global->__pyx_tuple__376
#define __pyx_tuple__378 __pyx_mstate_global->__pyx_tuple__378
#define __pyx_tuple__381 __pyx_mstate_global->__pyx_tuple__381
#define __pyx_tuple__383 __pyx_mstate_global->__pyx_tuple__383
#define __pyx_tuple__385 __pyx_mstate_global->__pyx_tuple__385
#define __pyx_tuple__398 __pyx_mstate_global->__pyx_tuple__398
#define __pyx_tuple__401 __pyx_mstate_global->__pyx_tuple__401
#define __pyx_tuple__406 __pyx_mstate_global->__pyx_tuple__406
#define __pyx_tuple__411 __pyx_mstate_global->__pyx_tuple__411
#define __pyx_tuple__424 __pyx_mstate_global->__pyx_tuple__424
#define __pyx_tuple__432 __pyx_mstate_global->__pyx_tuple__432
#define __pyx_tuple__435 __pyx_mstate_global->__pyx_tuple__435
#define __pyx_tuple__437 __pyx_mstate_global->__pyx_tuple__437
#define __pyx_tuple__439 __pyx_mstate_global->__pyx_tuple__439
#define __pyx_tuple__443 __pyx_mstate_global->__pyx_tuple__443
#define __pyx_tuple__445 __pyx_mstate_global->__pyx_tuple__445
#define __pyx_tuple__447 __pyx_mstate_global->__pyx_tuple__447
#define __pyx_tuple__448 __pyx_mstate_global->__pyx_tuple__448
#define __pyx_tuple__450 __pyx_mstate_global->__pyx_tuple__450
#define __pyx_tuple__452 __pyx_mstate_global->__pyx_tuple__452
#define __pyx_tuple__455 __pyx_mstate_global->__pyx_tuple__455
#define __pyx_tuple__457 __pyx_mstate_global->__pyx_tuple__457
#define __pyx_tuple__458 __pyx_mstate_global->__pyx_tuple__458
#define __pyx_tuple__460 __pyx_mstate_global->__pyx_tuple__460
#define __pyx_tuple__462 __pyx_mstate_global->__pyx_tuple__462
#define __pyx_tuple__464 __pyx_mstate_global->__pyx_tuple__464
#define __pyx_tuple__466 __pyx_mstate_global->__pyx_tuple__466
#define __pyx_tuple__468 __pyx_mstate_global->__pyx_tuple__468
#define __pyx_tuple__470 __pyx_mstate_global->__pyx_tuple__470
#define __pyx_tuple__472 __pyx_mstate_global->__pyx_tuple__472
#define __pyx_tuple__474 __pyx_mstate_global->__pyx_tuple__474
#define __pyx_tuple__476 __pyx_mstate_global->__pyx_tuple__476
#define __pyx_tuple__478 __pyx_mstate_global->__pyx_tuple__478
#define __pyx_tuple__482 __pyx_mstate_global->__pyx_tuple__482
#define __pyx_tuple__484 __pyx_mstate_global->__pyx_tuple__484
#define __pyx_tuple__486 __pyx_mstate_global->__pyx_tuple__486
#define __pyx_tuple__488 __pyx_mstate_global->__pyx_tuple__488
#define __pyx_tuple__489 __pyx_mstate_global->__pyx_tuple__489
#define __pyx_tuple__493 __pyx_mstate_global->__pyx_tuple__493
#define __pyx_tuple__497 __pyx_mstate_global->__pyx_tuple__497
#define __pyx_tuple__499 __pyx_mstate_global->__pyx_tuple__499
#define __pyx_tuple__505 __pyx_mstate_global->__pyx_tuple__505
#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
#define __pyx_codeobj__23 __pyx_mstate_global->__pyx_codeobj__23
#define __pyx_codeobj__24 __pyx_mstate_global->__pyx_codeobj__24
#define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26
#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27
#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28
#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
#define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30
#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31
#define __pyx_codeobj__33 __pyx_mstate_global->__pyx_codeobj__33
#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35
#define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36
#define __pyx_codeobj__37 __pyx_mstate_global->__pyx_codeobj__37
#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39
#define __pyx_codeobj__40 __pyx_mstate_global->__pyx_codeobj__40
#define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42
#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46
#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48
#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50
#define __pyx_codeobj__51 __pyx_mstate_global->__pyx_codeobj__51
#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52
#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54
#define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55
#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56
#define __pyx_codeobj__57 __pyx_mstate_global->__pyx_codeobj__57
#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58
#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60
#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62
#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
#define __pyx_codeobj__66 __pyx_mstate_global->__pyx_codeobj__66
#define __pyx_codeobj__68 __pyx_mstate_global->__pyx_codeobj__68
#define __pyx_codeobj__69 __pyx_mstate_global->__pyx_codeobj__69
#define __pyx_codeobj__71 __pyx_mstate_global->__pyx_codeobj__71
#define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72
#define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73
#define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74
#define __pyx_codeobj__75 __pyx_mstate_global->__pyx_codeobj__75
#define __pyx_codeobj__77 __pyx_mstate_global->__pyx_codeobj__77
#define __pyx_codeobj__79 __pyx_mstate_global->__pyx_codeobj__79
#define __pyx_codeobj__80 __pyx_mstate_global->__pyx_codeobj__80
#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81
#define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82
#define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83
#define __pyx_codeobj__84 __pyx_mstate_global->__pyx_codeobj__84
#define __pyx_codeobj__85 __pyx_mstate_global->__pyx_codeobj__85
#define __pyx_codeobj__86 __pyx_mstate_global->__pyx_codeobj__86
#define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87
#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88
#define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89
#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91
#define __pyx_codeobj__93 __pyx_mstate_global->__pyx_codeobj__93
#define __pyx_codeobj__94 __pyx_mstate_global->__pyx_codeobj__94
#define __pyx_codeobj__96 __pyx_mstate_global->__pyx_codeobj__96
#define __pyx_codeobj__97 __pyx_mstate_global->__pyx_codeobj__97
#define __pyx_codeobj__98 __pyx_mstate_global->__pyx_codeobj__98
#define __pyx_codeobj__99 __pyx_mstate_global->__pyx_codeobj__99
#define __pyx_codeobj__100 __pyx_mstate_global->__pyx_codeobj__100
#define __pyx_codeobj__101 __pyx_mstate_global->__pyx_codeobj__101
#define __pyx_codeobj__102 __pyx_mstate_global->__pyx_codeobj__102
#define __pyx_codeobj__103 __pyx_mstate_global->__pyx_codeobj__103
#define __pyx_codeobj__104 __pyx_mstate_global->__pyx_codeobj__104
#define __pyx_codeobj__105 __pyx_mstate_global->__pyx_codeobj__105
#define __pyx_codeobj__106 __pyx_mstate_global->__pyx_codeobj__106
#define __pyx_codeobj__108 __pyx_mstate_global->__pyx_codeobj__108
#define __pyx_codeobj__109 __pyx_mstate_global->__pyx_codeobj__109
#define __pyx_codeobj__110 __pyx_mstate_global->__pyx_codeobj__110
#define __pyx_codeobj__111 __pyx_mstate_global->__pyx_codeobj__111
#define __pyx_codeobj__112 __pyx_mstate_global->__pyx_codeobj__112
#define __pyx_codeobj__113 __pyx_mstate_global->__pyx_codeobj__113
#define __pyx_codeobj__114 __pyx_mstate_global->__pyx_codeobj__114
#define __pyx_codeobj__115 __pyx_mstate_global->__pyx_codeobj__115
#define __pyx_codeobj__116 __pyx_mstate_global->__pyx_codeobj__116
#define __pyx_codeobj__117 __pyx_mstate_global->__pyx_codeobj__117
#define __pyx_codeobj__119 __pyx_mstate_global->__pyx_codeobj__119
#define __pyx_codeobj__121 __pyx_mstate_global->__pyx_codeobj__121
#define __pyx_codeobj__123 __pyx_mstate_global->__pyx_codeobj__123
#define __pyx_codeobj__125 __pyx_mstate_global->__pyx_codeobj__125
#define __pyx_codeobj__127 __pyx_mstate_global->__pyx_codeobj__127
#define __pyx_codeobj__129 __pyx_mstate_global->__pyx_codeobj__129
#define __pyx_codeobj__130 __pyx_mstate_global->__pyx_codeobj__130
#define __pyx_codeobj__131 __pyx_mstate_global->__pyx_codeobj__131
#define __pyx_codeobj__132 __pyx_mstate_global->__pyx_codeobj__132
#define __pyx_codeobj__133 __pyx_mstate_global->__pyx_codeobj__133
#define __pyx_codeobj__135 __pyx_mstate_global->__pyx_codeobj__135
#define __pyx_codeobj__136 __pyx_mstate_global->__pyx_codeobj__136
#define __pyx_codeobj__138 __pyx_mstate_global->__pyx_codeobj__138
#define __pyx_codeobj__139 __pyx_mstate_global->__pyx_codeobj__139
#define __pyx_codeobj__140 __pyx_mstate_global->__pyx_codeobj__140
#define __pyx_codeobj__141 __pyx_mstate_global->__pyx_codeobj__141
#define __pyx_codeobj__142 __pyx_mstate_global->__pyx_codeobj__142
#define __pyx_codeobj__143 __pyx_mstate_global->__pyx_codeobj__143
#define __pyx_codeobj__144 __pyx_mstate_global->__pyx_codeobj__144
#define __pyx_codeobj__146 __pyx_mstate_global->__pyx_codeobj__146
#define __pyx_codeobj__148 __pyx_mstate_global->__pyx_codeobj__148
#define __pyx_codeobj__150 __pyx_mstate_global->__pyx_codeobj__150
#define __pyx_codeobj__151 __pyx_mstate_global->__pyx_codeobj__151
#define __pyx_codeobj__153 __pyx_mstate_global->__pyx_codeobj__153
#define __pyx_codeobj__155 __pyx_mstate_global->__pyx_codeobj__155
#define __pyx_codeobj__157 __pyx_mstate_global->__pyx_codeobj__157
#define __pyx_codeobj__159 __pyx_mstate_global->__pyx_codeobj__159
#define __pyx_codeobj__160 __pyx_mstate_global->__pyx_codeobj__160
#define __pyx_codeobj__161 __pyx_mstate_global->__pyx_codeobj__161
#define __pyx_codeobj__162 __pyx_mstate_global->__pyx_codeobj__162
#define __pyx_codeobj__164 __pyx_mstate_global->__pyx_codeobj__164
#define __pyx_codeobj__166 __pyx_mstate_global->__pyx_codeobj__166
#define __pyx_codeobj__168 __pyx_mstate_global->__pyx_codeobj__168
#define __pyx_codeobj__169 __pyx_mstate_global->__pyx_codeobj__169
#define __pyx_codeobj__171 __pyx_mstate_global->__pyx_codeobj__171
#define __pyx_codeobj__173 __pyx_mstate_global->__pyx_codeobj__173
#define __pyx_codeobj__174 __pyx_mstate_global->__pyx_codeobj__174
#define __pyx_codeobj__175 __pyx_mstate_global->__pyx_codeobj__175
#define __pyx_codeobj__176 __pyx_mstate_global->__pyx_codeobj__176
#define __pyx_codeobj__177 __pyx_mstate_global->__pyx_codeobj__177
#define __pyx_codeobj__178 __pyx_mstate_global->__pyx_codeobj__178
#define __pyx_codeobj__179 __pyx_mstate_global->__pyx_codeobj__179
#define __pyx_codeobj__181 __pyx_mstate_global->__pyx_codeobj__181
#define __pyx_codeobj__182 __pyx_mstate_global->__pyx_codeobj__182
#define __pyx_codeobj__184 __pyx_mstate_global->__pyx_codeobj__184
#define __pyx_codeobj__186 __pyx_mstate_global->__pyx_codeobj__186
#define __pyx_codeobj__187 __pyx_mstate_global->__pyx_codeobj__187
#define __pyx_codeobj__188 __pyx_mstate_global->__pyx_codeobj__188
#define __pyx_codeobj__189 __pyx_mstate_global->__pyx_codeobj__189
#define __pyx_codeobj__190 __pyx_mstate_global->__pyx_codeobj__190
#define __pyx_codeobj__191 __pyx_mstate_global->__pyx_codeobj__191
#define __pyx_codeobj__193 __pyx_mstate_global->__pyx_codeobj__193
#define __pyx_codeobj__194 __pyx_mstate_global->__pyx_codeobj__194
#define __pyx_codeobj__195 __pyx_mstate_global->__pyx_codeobj__195
#define __pyx_codeobj__196 __pyx_mstate_global->__pyx_codeobj__196
#define __pyx_codeobj__197 __pyx_mstate_global->__pyx_codeobj__197
#define __pyx_codeobj__198 __pyx_mstate_global->__pyx_codeobj__198
#define __pyx_codeobj__199 __pyx_mstate_global->__pyx_codeobj__199
#define __pyx_codeobj__200 __pyx_mstate_global->__pyx_codeobj__200
#define __pyx_codeobj__201 __pyx_mstate_global->__pyx_codeobj__201
#define __pyx_codeobj__202 __pyx_mstate_global->__pyx_codeobj__202
#define __pyx_codeobj__203 __pyx_mstate_global->__pyx_codeobj__203
#define __pyx_codeobj__204 __pyx_mstate_global->__pyx_codeobj__204
#define __pyx_codeobj__206 __pyx_mstate_global->__pyx_codeobj__206
#define __pyx_codeobj__207 __pyx_mstate_global->__pyx_codeobj__207
#define __pyx_codeobj__208 __pyx_mstate_global->__pyx_codeobj__208
#define __pyx_codeobj__209 __pyx_mstate_global->__pyx_codeobj__209
#define __pyx_codeobj__210 __pyx_mstate_global->__pyx_codeobj__210
#define __pyx_codeobj__211 __pyx_mstate_global->__pyx_codeobj__211
#define __pyx_codeobj__212 __pyx_mstate_global->__pyx_codeobj__212
#define __pyx_codeobj__213 __pyx_mstate_global->__pyx_codeobj__213
#define __pyx_codeobj__214 __pyx_mstate_global->__pyx_codeobj__214
#define __pyx_codeobj__215 __pyx_mstate_global->__pyx_codeobj__215
#define __pyx_codeobj__216 __pyx_mstate_global->__pyx_codeobj__216
#define __pyx_codeobj__217 __pyx_mstate_global->__pyx_codeobj__217
#define __pyx_codeobj__218 __pyx_mstate_global->__pyx_codeobj__218
#define __pyx_codeobj__220 __pyx_mstate_global->__pyx_codeobj__220
#define __pyx_codeobj__221 __pyx_mstate_global->__pyx_codeobj__221
#define __pyx_codeobj__222 __pyx_mstate_global->__pyx_codeobj__222
#define __pyx_codeobj__223 __pyx_mstate_global->__pyx_codeobj__223
#define __pyx_codeobj__224 __pyx_mstate_global->__pyx_codeobj__224
#define __pyx_codeobj__226 __pyx_mstate_global->__pyx_codeobj__226
#define __pyx_codeobj__228 __pyx_mstate_global->__pyx_codeobj__228
#define __pyx_codeobj__229 __pyx_mstate_global->__pyx_codeobj__229
#define __pyx_codeobj__230 __pyx_mstate_global->__pyx_codeobj__230
#define __pyx_codeobj__231 __pyx_mstate_global->__pyx_codeobj__231
#define __pyx_codeobj__232 __pyx_mstate_global->__pyx_codeobj__232
#define __pyx_codeobj__233 __pyx_mstate_global->__pyx_codeobj__233
#define __pyx_codeobj__234 __pyx_mstate_global->__pyx_codeobj__234
#define __pyx_codeobj__235 __pyx_mstate_global->__pyx_codeobj__235
#define __pyx_codeobj__236 __pyx_mstate_global->__pyx_codeobj__236
#define __pyx_codeobj__237 __pyx_mstate_global->__pyx_codeobj__237
#define __pyx_codeobj__239 __pyx_mstate_global->__pyx_codeobj__239
#define __pyx_codeobj__240 __pyx_mstate_global->__pyx_codeobj__240
#define __pyx_codeobj__241 __pyx_mstate_global->__pyx_codeobj__241
#define __pyx_codeobj__243 __pyx_mstate_global->__pyx_codeobj__243
#define __pyx_codeobj__244 __pyx_mstate_global->__pyx_codeobj__244
#define __pyx_codeobj__246 __pyx_mstate_global->__pyx_codeobj__246
#define __pyx_codeobj__248 __pyx_mstate_global->__pyx_codeobj__248
#define __pyx_codeobj__250 __pyx_mstate_global->__pyx_codeobj__250
#define __pyx_codeobj__252 __pyx_mstate_global->__pyx_codeobj__252
#define __pyx_codeobj__254 __pyx_mstate_global->__pyx_codeobj__254
#define __pyx_codeobj__256 __pyx_mstate_global->__pyx_codeobj__256
#define __pyx_codeobj__258 __pyx_mstate_global->__pyx_codeobj__258
#define __pyx_codeobj__259 __pyx_mstate_global->__pyx_codeobj__259
#define __pyx_codeobj__261 __pyx_mstate_global->__pyx_codeobj__261
#define __pyx_codeobj__262 __pyx_mstate_global->__pyx_codeobj__262
#define __pyx_codeobj__263 __pyx_mstate_global->__pyx_codeobj__263
#define __pyx_codeobj__265 __pyx_mstate_global->__pyx_codeobj__265
#define __pyx_codeobj__266 __pyx_mstate_global->__pyx_codeobj__266
#define __pyx_codeobj__267 __pyx_mstate_global->__pyx_codeobj__267
#define __pyx_codeobj__268 __pyx_mstate_global->__pyx_codeobj__268
#define __pyx_codeobj__270 __pyx_mstate_global->__pyx_codeobj__270
#define __pyx_codeobj__272 __pyx_mstate_global->__pyx_codeobj__272
#define __pyx_codeobj__274 __pyx_mstate_global->__pyx_codeobj__274
#define __pyx_codeobj__275 __pyx_mstate_global->__pyx_codeobj__275
#define __pyx_codeobj__276 __pyx_mstate_global->__pyx_codeobj__276
#define __pyx_codeobj__278 __pyx_mstate_global->__pyx_codeobj__278
#define __pyx_codeobj__279 __pyx_mstate_global->__pyx_codeobj__279
#define __pyx_codeobj__280 __pyx_mstate_global->__pyx_codeobj__280
#define __pyx_codeobj__281 __pyx_mstate_global->__pyx_codeobj__281
#define __pyx_codeobj__282 __pyx_mstate_global->__pyx_codeobj__282
#define __pyx_codeobj__283 __pyx_mstate_global->__pyx_codeobj__283
#define __pyx_codeobj__284 __pyx_mstate_global->__pyx_codeobj__284
#define __pyx_codeobj__285 __pyx_mstate_global->__pyx_codeobj__285
#define __pyx_codeobj__287 __pyx_mstate_global->__pyx_codeobj__287
#define __pyx_codeobj__288 __pyx_mstate_global->__pyx_codeobj__288
#define __pyx_codeobj__289 __pyx_mstate_global->__pyx_codeobj__289
#define __pyx_codeobj__290 __pyx_mstate_global->__pyx_codeobj__290
#define __pyx_codeobj__291 __pyx_mstate_global->__pyx_codeobj__291
#define __pyx_codeobj__292 __pyx_mstate_global->__pyx_codeobj__292
#define __pyx_codeobj__294 __pyx_mstate_global->__pyx_codeobj__294
#define __pyx_codeobj__295 __pyx_mstate_global->__pyx_codeobj__295
#define __pyx_codeobj__297 __pyx_mstate_global->__pyx_codeobj__297
#define __pyx_codeobj__299 __pyx_mstate_global->__pyx_codeobj__299
#define __pyx_codeobj__301 __pyx_mstate_global->__pyx_codeobj__301
#define __pyx_codeobj__303 __pyx_mstate_global->__pyx_codeobj__303
#define __pyx_codeobj__304 __pyx_mstate_global->__pyx_codeobj__304
#define __pyx_codeobj__305 __pyx_mstate_global->__pyx_codeobj__305
#define __pyx_codeobj__307 __pyx_mstate_global->__pyx_codeobj__307
#define __pyx_codeobj__309 __pyx_mstate_global->__pyx_codeobj__309
#define __pyx_codeobj__310 __pyx_mstate_global->__pyx_codeobj__310
#define __pyx_codeobj__312 __pyx_mstate_global->__pyx_codeobj__312
#define __pyx_codeobj__314 __pyx_mstate_global->__pyx_codeobj__314
#define __pyx_codeobj__316 __pyx_mstate_global->__pyx_codeobj__316
#define __pyx_codeobj__317 __pyx_mstate_global->__pyx_codeobj__317
#define __pyx_codeobj__319 __pyx_mstate_global->__pyx_codeobj__319
#define __pyx_codeobj__320 __pyx_mstate_global->__pyx_codeobj__320
#define __pyx_codeobj__322 __pyx_mstate_global->__pyx_codeobj__322
#define __pyx_codeobj__323 __pyx_mstate_global->__pyx_codeobj__323
#define __pyx_codeobj__325 __pyx_mstate_global->__pyx_codeobj__325
#define __pyx_codeobj__326 __pyx_mstate_global->__pyx_codeobj__326
#define __pyx_codeobj__328 __pyx_mstate_global->__pyx_codeobj__328
#define __pyx_codeobj__329 __pyx_mstate_global->__pyx_codeobj__329
#define __pyx_codeobj__331 __pyx_mstate_global->__pyx_codeobj__331
#define __pyx_codeobj__333 __pyx_mstate_global->__pyx_codeobj__333
#define __pyx_codeobj__335 __pyx_mstate_global->__pyx_codeobj__335
#define __pyx_codeobj__337 __pyx_mstate_global->__pyx_codeobj__337
#define __pyx_codeobj__338 __pyx_mstate_global->__pyx_codeobj__338
#define __pyx_codeobj__339 __pyx_mstate_global->__pyx_codeobj__339
#define __pyx_codeobj__340 __pyx_mstate_global->__pyx_codeobj__340
#define __pyx_codeobj__341 __pyx_mstate_global->__pyx_codeobj__341
#define __pyx_codeobj__342 __pyx_mstate_global->__pyx_codeobj__342
#define __pyx_codeobj__343 __pyx_mstate_global->__pyx_codeobj__343
#define __pyx_codeobj__344 __pyx_mstate_global->__pyx_codeobj__344
#define __pyx_codeobj__345 __pyx_mstate_global->__pyx_codeobj__345
#define __pyx_codeobj__346 __pyx_mstate_global->__pyx_codeobj__346
#define __pyx_codeobj__348 __pyx_mstate_global->__pyx_codeobj__348
#define __pyx_codeobj__350 __pyx_mstate_global->__pyx_codeobj__350
#define __pyx_codeobj__352 __pyx_mstate_global->__pyx_codeobj__352
#define __pyx_codeobj__354 __pyx_mstate_global->__pyx_codeobj__354
#define __pyx_codeobj__355 __pyx_mstate_global->__pyx_codeobj__355
#define __pyx_codeobj__357 __pyx_mstate_global->__pyx_codeobj__357
#define __pyx_codeobj__358 __pyx_mstate_global->__pyx_codeobj__358
#define __pyx_codeobj__359 __pyx_mstate_global->__pyx_codeobj__359
#define __pyx_codeobj__360 __pyx_mstate_global->__pyx_codeobj__360
#define __pyx_codeobj__361 __pyx_mstate_global->__pyx_codeobj__361
#define __pyx_codeobj__363 __pyx_mstate_global->__pyx_codeobj__363
#define __pyx_codeobj__364 __pyx_mstate_global->__pyx_codeobj__364
#define __pyx_codeobj__365 __pyx_mstate_global->__pyx_codeobj__365
#define __pyx_codeobj__366 __pyx_mstate_global->__pyx_codeobj__366
#define __pyx_codeobj__367 __pyx_mstate_global->__pyx_codeobj__367
#define __pyx_codeobj__368 __pyx_mstate_global->__pyx_codeobj__368
#define __pyx_codeobj__369 __pyx_mstate_global->__pyx_codeobj__369
#define __pyx_codeobj__370 __pyx_mstate_global->__pyx_codeobj__370
#define __pyx_codeobj__371 __pyx_mstate_global->__pyx_codeobj__371
#define __pyx_codeobj__372 __pyx_mstate_global->__pyx_codeobj__372
#define __pyx_codeobj__373 __pyx_mstate_global->__pyx_codeobj__373
#define __pyx_codeobj__374 __pyx_mstate_global->__pyx_codeobj__374
#define __pyx_codeobj__375 __pyx_mstate_global->__pyx_codeobj__375
#define __pyx_codeobj__377 __pyx_mstate_global->__pyx_codeobj__377
#define __pyx_codeobj__379 __pyx_mstate_global->__pyx_codeobj__379
#define __pyx_codeobj__380 __pyx_mstate_global->__pyx_codeobj__380
#define __pyx_codeobj__382 __pyx_mstate_global->__pyx_codeobj__382
#define __pyx_codeobj__384 __pyx_mstate_global->__pyx_codeobj__384
#define __pyx_codeobj__386 __pyx_mstate_global->__pyx_codeobj__386
#define __pyx_codeobj__387 __pyx_mstate_global->__pyx_codeobj__387
#define __pyx_codeobj__388 __pyx_mstate_global->__pyx_codeobj__388
#define __pyx_codeobj__389 __pyx_mstate_global->__pyx_codeobj__389
#define __pyx_codeobj__390 __pyx_mstate_global->__pyx_codeobj__390
#define __pyx_codeobj__391 __pyx_mstate_global->__pyx_codeobj__391
#define __pyx_codeobj__392 __pyx_mstate_global->__pyx_codeobj__392
#define __pyx_codeobj__393 __pyx_mstate_global->__pyx_codeobj__393
#define __pyx_codeobj__394 __pyx_mstate_global->__pyx_codeobj__394
#define __pyx_codeobj__395 __pyx_mstate_global->__pyx_codeobj__395
#define __pyx_codeobj__396 __pyx_mstate_global->__pyx_codeobj__396
#define __pyx_codeobj__397 __pyx_mstate_global->__pyx_codeobj__397
#define __pyx_codeobj__399 __pyx_mstate_global->__pyx_codeobj__399
#define __pyx_codeobj__400 __pyx_mstate_global->__pyx_codeobj__400
#define __pyx_codeobj__402 __pyx_mstate_global->__pyx_codeobj__402
#define __pyx_codeobj__403 __pyx_mstate_global->__pyx_codeobj__403
#define __pyx_codeobj__404 __pyx_mstate_global->__pyx_codeobj__404
#define __pyx_codeobj__405 __pyx_mstate_global->__pyx_codeobj__405
#define __pyx_codeobj__407 __pyx_mstate_global->__pyx_codeobj__407
#define __pyx_codeobj__408 __pyx_mstate_global->__pyx_codeobj__408
#define __pyx_codeobj__409 __pyx_mstate_global->__pyx_codeobj__409
#define __pyx_codeobj__410 __pyx_mstate_global->__pyx_codeobj__410
#define __pyx_codeobj__412 __pyx_mstate_global->__pyx_codeobj__412
#define __pyx_codeobj__413 __pyx_mstate_global->__pyx_codeobj__413
#define __pyx_codeobj__414 __pyx_mstate_global->__pyx_codeobj__414
#define __pyx_codeobj__415 __pyx_mstate_global->__pyx_codeobj__415
#define __pyx_codeobj__416 __pyx_mstate_global->__pyx_codeobj__416
#define __pyx_codeobj__417 __pyx_mstate_global->__pyx_codeobj__417
#define __pyx_codeobj__418 __pyx_mstate_global->__pyx_codeobj__418
#define __pyx_codeobj__419 __pyx_mstate_global->__pyx_codeobj__419
#define __pyx_codeobj__420 __pyx_mstate_global->__pyx_codeobj__420
#define __pyx_codeobj__421 __pyx_mstate_global->__pyx_codeobj__421
#define __pyx_codeobj__422 __pyx_mstate_global->__pyx_codeobj__422
#define __pyx_codeobj__423 __pyx_mstate_global->__pyx_codeobj__423
#define __pyx_codeobj__425 __pyx_mstate_global->__pyx_codeobj__425
#define __pyx_codeobj__426 __pyx_mstate_global->__pyx_codeobj__426
#define __pyx_codeobj__427 __pyx_mstate_global->__pyx_codeobj__427
#define __pyx_codeobj__428 __pyx_mstate_global->__pyx_codeobj__428
#define __pyx_codeobj__429 __pyx_mstate_global->__pyx_codeobj__429
#define __pyx_codeobj__430 __pyx_mstate_global->__pyx_codeobj__430
#define __pyx_codeobj__431 __pyx_mstate_global->__pyx_codeobj__431
#define __pyx_codeobj__433 __pyx_mstate_global->__pyx_codeobj__433
#define __pyx_codeobj__434 __pyx_mstate_global->__pyx_codeobj__434
#define __pyx_codeobj__436 __pyx_mstate_global->__pyx_codeobj__436
#define __pyx_codeobj__438 __pyx_mstate_global->__pyx_codeobj__438
#define __pyx_codeobj__440 __pyx_mstate_global->__pyx_codeobj__440
#define __pyx_codeobj__441 __pyx_mstate_global->__pyx_codeobj__441
#define __pyx_codeobj__442 __pyx_mstate_global->__pyx_codeobj__442
#define __pyx_codeobj__444 __pyx_mstate_global->__pyx_codeobj__444
#define __pyx_codeobj__446 __pyx_mstate_global->__pyx_codeobj__446
#define __pyx_codeobj__449 __pyx_mstate_global->__pyx_codeobj__449
#define __pyx_codeobj__451 __pyx_mstate_global->__pyx_codeobj__451
#define __pyx_codeobj__453 __pyx_mstate_global->__pyx_codeobj__453
#define __pyx_codeobj__454 __pyx_mstate_global->__pyx_codeobj__454
#define __pyx_codeobj__456 __pyx_mstate_global->__pyx_codeobj__456
#define __pyx_codeobj__459 __pyx_mstate_global->__pyx_codeobj__459
#define __pyx_codeobj__461 __pyx_mstate_global->__pyx_codeobj__461
#define __pyx_codeobj__463 __pyx_mstate_global->__pyx_codeobj__463
#define __pyx_codeobj__465 __pyx_mstate_global->__pyx_codeobj__465
#define __pyx_codeobj__467 __pyx_mstate_global->__pyx_codeobj__467
#define __pyx_codeobj__469 __pyx_mstate_global->__pyx_codeobj__469
#define __pyx_codeobj__471 __pyx_mstate_global->__pyx_codeobj__471
#define __pyx_codeobj__473 __pyx_mstate_global->__pyx_codeobj__473
#define __pyx_codeobj__475 __pyx_mstate_global->__pyx_codeobj__475
#define __pyx_codeobj__477 __pyx_mstate_global->__pyx_codeobj__477
#define __pyx_codeobj__479 __pyx_mstate_global->__pyx_codeobj__479
#define __pyx_codeobj__480 __pyx_mstate_global->__pyx_codeobj__480
#define __pyx_codeobj__481 __pyx_mstate_global->__pyx_codeobj__481
#define __pyx_codeobj__483 __pyx_mstate_global->__pyx_codeobj__483
#define __pyx_codeobj__485 __pyx_mstate_global->__pyx_codeobj__485
#define __pyx_codeobj__487 __pyx_mstate_global->__pyx_codeobj__487
#define __pyx_codeobj__490 __pyx_mstate_global->__pyx_codeobj__490
#define __pyx_codeobj__491 __pyx_mstate_global->__pyx_codeobj__491
#define __pyx_codeobj__492 __pyx_mstate_global->__pyx_codeobj__492
#define __pyx_codeobj__494 __pyx_mstate_global->__pyx_codeobj__494
#define __pyx_codeobj__495 __pyx_mstate_global->__pyx_codeobj__495
#define __pyx_codeobj__496 __pyx_mstate_global->__pyx_codeobj__496
#define __pyx_codeobj__498 __pyx_mstate_global->__pyx_codeobj__498
#define __pyx_codeobj__500 __pyx_mstate_global->__pyx_codeobj__500
#define __pyx_codeobj__501 __pyx_mstate_global->__pyx_codeobj__501
#define __pyx_codeobj__502 __pyx_mstate_global->__pyx_codeobj__502
#define __pyx_codeobj__503 __pyx_mstate_global->__pyx_codeobj__503
#define __pyx_codeobj__504 __pyx_mstate_global->__pyx_codeobj__504
#define __pyx_codeobj__506 __pyx_mstate_global->__pyx_codeobj__506
#define __pyx_codeobj__507 __pyx_mstate_global->__pyx_codeobj__507
#define __pyx_codeobj__508 __pyx_mstate_global->__pyx_codeobj__508
#define __pyx_codeobj__509 __pyx_mstate_global->__pyx_codeobj__509
#define __pyx_codeobj__510 __pyx_mstate_global->__pyx_codeobj__510
#define __pyx_codeobj__511 __pyx_mstate_global->__pyx_codeobj__511
#define __pyx_codeobj__512 __pyx_mstate_global->__pyx_codeobj__512
#define __pyx_codeobj__513 __pyx_mstate_global->__pyx_codeobj__513
#define __pyx_codeobj__514 __pyx_mstate_global->__pyx_codeobj__514
/* #### Code section: module_code ### */

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_int(std::vector<int>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_int", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_int")
 * cdef object __pyx_convert_vector_to_py_int(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(std::vector<std::vector<int> >  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __pyx_convert_vector_to_py_int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_convert_vector_to_py_double(std::vector<double>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_double", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(std::string const &__pyx_v_s) {
  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("__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":32
 * @cname("__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(const string& s):
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyUnicode_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyObject_string_to_py_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(std::string const &__pyx_v_s) {
  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("__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":38
 * @cname("__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(const string& s):
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyStr_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyUnicode_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyUnicode_string_to_py_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(std::string const &__pyx_v_s) {
  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("__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":44
 * @cname("__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(const string& s):
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyBytes_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyStr_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyStr_string_to_py_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(std::string const &__pyx_v_s) {
  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("__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":50
 * @cname("__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(const string& s):
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyByteArray_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(std::string const &__pyx_v_s) {
  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("__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string", 1);

  /* "string.to_py":56
 * @cname("__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(const string& s):
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyByteArray_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyByteArray_string_to_py_6libcpp_6string_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_string(std::vector<std::string>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_string", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_double")
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<double>  __pyx_convert_vector_from_py_double(PyObject *__pyx_v_o) {
  std::vector<double>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<double>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_double", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      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(5, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((double)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(5, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_double")
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static std::vector<int>  __pyx_convert_vector_from_py_int(PyObject *__pyx_v_o) {
  std::vector<int>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<int>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_int", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      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(5, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_item); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((int)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(5, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_int")
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pair.to_py":190
 * 
 * @cname("__pyx_convert_pair_to_py_int____int")
 * cdef object __pyx_convert_pair_to_py_int____int(const pair[X,Y]& p):             # <<<<<<<<<<<<<<
 *     return p.first, p.second
 * 
 */

static PyObject *__pyx_convert_pair_to_py_int____int(std::pair<int,int>  const &__pyx_v_p) {
  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("__pyx_convert_pair_to_py_int____int", 1);

  /* "pair.to_py":191
 * @cname("__pyx_convert_pair_to_py_int____int")
 * cdef object __pyx_convert_pair_to_py_int____int(const pair[X,Y]& p):
 *     return p.first, p.second             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_p.first); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p.second); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(5, 191, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(5, 191, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pair.to_py":190
 * 
 * @cname("__pyx_convert_pair_to_py_int____int")
 * cdef object __pyx_convert_pair_to_py_int____int(const pair[X,Y]& p):             # <<<<<<<<<<<<<<
 *     return p.first, p.second
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pair.to_py.__pyx_convert_pair_to_py_int____int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(std::vector<std::pair<int,int> >  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __pyx_convert_pair_to_py_int____int((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pair.from_py":177
 * 
 * @cname("__pyx_convert_pair_from_py_int__and_int")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_int__and_int(object o) except *:             # <<<<<<<<<<<<<<
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)
 */

static std::pair<int,int>  __pyx_convert_pair_from_py_int__and_int(PyObject *__pyx_v_o) {
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_y = NULL;
  std::pair<int,int>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_t_6;
  std::pair<int,int>  __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_pair_from_py_int__and_int", 1);

  /* "pair.from_py":178
 * @cname("__pyx_convert_pair_from_py_int__and_int")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_int__and_int(object o) except *:
 *     x, y = o             # <<<<<<<<<<<<<<
 *     return pair[X,Y](<X>x, <Y>y)
 * 
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_o))) || (PyList_CheckExact(__pyx_v_o))) {
    PyObject* sequence = __pyx_v_o;
    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(5, 178, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(5, 178, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(5, 178, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_x = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_y = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pair.from_py":179
 * cdef pair[X,Y] __pyx_convert_pair_from_py_int__and_int(object o) except *:
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 179, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 179, __pyx_L1_error)
  try {
    __pyx_t_7 = std::pair<int,int> (((int)__pyx_t_5), ((int)__pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(5, 179, __pyx_L1_error)
  }
  __pyx_r = __pyx_t_7;
  goto __pyx_L0;

  /* "pair.from_py":177
 * 
 * @cname("__pyx_convert_pair_from_py_int__and_int")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_int__and_int(object o) except *:             # <<<<<<<<<<<<<<
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pair.from_py.__pyx_convert_pair_from_py_int__and_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<std::pair<int,int> >  __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(PyObject *__pyx_v_o) {
  std::vector<std::pair<int,int> >  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<std::pair<int,int> >  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  std::pair<int,int>  __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___", 1);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      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(5, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __pyx_convert_pair_from_py_int__and_int(__pyx_v_item); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((std::pair<int,int> )__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(5, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___")
 * cdef vector[X] __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_SCIP_Real")
 * cdef object __pyx_convert_vector_to_py_SCIP_Real(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_SCIP_Real(std::vector<SCIP_Real>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_SCIP_Real", 1);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_SCIP_Real")
 * cdef object __pyx_convert_vector_to_py_SCIP_Real(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_SCIP_Real(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(5, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_SCIP_Real")
 * cdef object __pyx_convert_vector_to_py_SCIP_Real(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_SCIP_Real")
 * cdef object __pyx_convert_vector_to_py_SCIP_Real(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_SCIP_Real", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cpython/complex.pxd":19
 * 
 *         @property
 *         cdef inline double real(self) noexcept:             # <<<<<<<<<<<<<<
 *             return self.cval.real
 * 
 */

static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4real_real(PyComplexObject *__pyx_v_self) {
  double __pyx_r;

  /* "cpython/complex.pxd":20
 *         @property
 *         cdef inline double real(self) noexcept:
 *             return self.cval.real             # <<<<<<<<<<<<<<
 * 
 *         @property
 */
  __pyx_r = __pyx_v_self->cval.real;
  goto __pyx_L0;

  /* "cpython/complex.pxd":19
 * 
 *         @property
 *         cdef inline double real(self) noexcept:             # <<<<<<<<<<<<<<
 *             return self.cval.real
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "cpython/complex.pxd":23
 * 
 *         @property
 *         cdef inline double imag(self) noexcept:             # <<<<<<<<<<<<<<
 *             return self.cval.imag
 * 
 */

static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4imag_imag(PyComplexObject *__pyx_v_self) {
  double __pyx_r;

  /* "cpython/complex.pxd":24
 *         @property
 *         cdef inline double imag(self) noexcept:
 *             return self.cval.imag             # <<<<<<<<<<<<<<
 * 
 *     # PyTypeObject PyComplex_Type
 */
  __pyx_r = __pyx_v_self->cval.imag;
  goto __pyx_L0;

  /* "cpython/complex.pxd":23
 * 
 *         @property
 *         cdef inline double imag(self) noexcept:             # <<<<<<<<<<<<<<
 *             return self.cval.imag
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "cpython/contextvars.pxd":112
 * 
 * 
 * cdef inline object get_value(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the default value of the context variable,
 */

static CYTHON_INLINE PyObject *__pyx_f_7cpython_11contextvars_get_value(PyObject *__pyx_v_var, struct __pyx_opt_args_7cpython_11contextvars_get_value *__pyx_optional_args) {
  PyObject *__pyx_v_default_value = ((PyObject *)Py_None);
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_pyvalue = NULL;
  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("get_value", 1);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_default_value = __pyx_optional_args->default_value;
    }
  }

  /* "cpython/contextvars.pxd":117
 *     or None if no such value or default was found.
 *     """
 *     cdef PyObject *value = NULL             # <<<<<<<<<<<<<<
 *     PyContextVar_Get(var, NULL, &value)
 *     if value is NULL:
 */
  __pyx_v_value = NULL;

  /* "cpython/contextvars.pxd":118
 *     """
 *     cdef PyObject *value = NULL
 *     PyContextVar_Get(var, NULL, &value)             # <<<<<<<<<<<<<<
 *     if value is NULL:
 *         # context variable does not have a default
 */
  __pyx_t_1 = PyContextVar_Get(__pyx_v_var, NULL, (&__pyx_v_value)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 118, __pyx_L1_error)

  /* "cpython/contextvars.pxd":119
 *     cdef PyObject *value = NULL
 *     PyContextVar_Get(var, NULL, &value)
 *     if value is NULL:             # <<<<<<<<<<<<<<
 *         # context variable does not have a default
 *         pyvalue = default_value
 */
  __pyx_t_2 = (__pyx_v_value == NULL);
  if (__pyx_t_2) {

    /* "cpython/contextvars.pxd":121
 *     if value is NULL:
 *         # context variable does not have a default
 *         pyvalue = default_value             # <<<<<<<<<<<<<<
 *     else:
 *         # value or default value of context variable
 */
    __Pyx_INCREF(__pyx_v_default_value);
    __pyx_v_pyvalue = __pyx_v_default_value;

    /* "cpython/contextvars.pxd":119
 *     cdef PyObject *value = NULL
 *     PyContextVar_Get(var, NULL, &value)
 *     if value is NULL:             # <<<<<<<<<<<<<<
 *         # context variable does not have a default
 *         pyvalue = default_value
 */
    goto __pyx_L3;
  }

  /* "cpython/contextvars.pxd":124
 *     else:
 *         # value or default value of context variable
 *         pyvalue = <object>value             # <<<<<<<<<<<<<<
 *         Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'
 *     return pyvalue
 */
  /*else*/ {
    __pyx_t_3 = ((PyObject *)__pyx_v_value);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_pyvalue = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "cpython/contextvars.pxd":125
 *         # value or default value of context variable
 *         pyvalue = <object>value
 *         Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'             # <<<<<<<<<<<<<<
 *     return pyvalue
 * 
 */
    Py_XDECREF(__pyx_v_value);
  }
  __pyx_L3:;

  /* "cpython/contextvars.pxd":126
 *         pyvalue = <object>value
 *         Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'
 *     return pyvalue             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_pyvalue);
  __pyx_r = __pyx_v_pyvalue;
  goto __pyx_L0;

  /* "cpython/contextvars.pxd":112
 * 
 * 
 * cdef inline object get_value(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the default value of the context variable,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("cpython.contextvars.get_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyvalue);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "cpython/contextvars.pxd":129
 * 
 * 
 * cdef inline object get_value_no_default(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the provided default value if no such value was found.
 */

static CYTHON_INLINE PyObject *__pyx_f_7cpython_11contextvars_get_value_no_default(PyObject *__pyx_v_var, struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default *__pyx_optional_args) {
  PyObject *__pyx_v_default_value = ((PyObject *)Py_None);
  PyObject *__pyx_v_value;
  PyObject *__pyx_v_pyvalue = NULL;
  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("get_value_no_default", 1);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_default_value = __pyx_optional_args->default_value;
    }
  }

  /* "cpython/contextvars.pxd":135
 *     Ignores the default value of the context variable, if any.
 *     """
 *     cdef PyObject *value = NULL             # <<<<<<<<<<<<<<
 *     PyContextVar_Get(var, <PyObject*>default_value, &value)
 *     # value of context variable or 'default_value'
 */
  __pyx_v_value = NULL;

  /* "cpython/contextvars.pxd":136
 *     """
 *     cdef PyObject *value = NULL
 *     PyContextVar_Get(var, <PyObject*>default_value, &value)             # <<<<<<<<<<<<<<
 *     # value of context variable or 'default_value'
 *     pyvalue = <object>value
 */
  __pyx_t_1 = PyContextVar_Get(__pyx_v_var, ((PyObject *)__pyx_v_default_value), (&__pyx_v_value)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 136, __pyx_L1_error)

  /* "cpython/contextvars.pxd":138
 *     PyContextVar_Get(var, <PyObject*>default_value, &value)
 *     # value of context variable or 'default_value'
 *     pyvalue = <object>value             # <<<<<<<<<<<<<<
 *     Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'
 *     return pyvalue
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_value);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_pyvalue = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "cpython/contextvars.pxd":139
 *     # value of context variable or 'default_value'
 *     pyvalue = <object>value
 *     Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'             # <<<<<<<<<<<<<<
 *     return pyvalue
 */
  Py_XDECREF(__pyx_v_value);

  /* "cpython/contextvars.pxd":140
 *     pyvalue = <object>value
 *     Py_XDECREF(value)  # PyContextVar_Get() returned an owned reference as 'PyObject*'
 *     return pyvalue             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_pyvalue);
  __pyx_r = __pyx_v_pyvalue;
  goto __pyx_L0;

  /* "cpython/contextvars.pxd":129
 * 
 * 
 * cdef inline object get_value_no_default(var, default_value=None):             # <<<<<<<<<<<<<<
 *     """Return a new reference to the value of the context variable,
 *     or the provided default value if no such value was found.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("cpython.contextvars.get_value_no_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyvalue);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":6
 *     cdef public str detectorname
 * 
 *     def freeDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of detector'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_1freeDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_freeDetector, "Detector.freeDetector(self)\ncalls destructor and frees memory of detector");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_1freeDetector = {"freeDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_1freeDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_freeDetector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_1freeDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeDetector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("freeDetector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "freeDetector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_freeDetector(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_freeDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeDetector", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":10
 *         pass
 * 
 *     def initDetector(self):             # <<<<<<<<<<<<<<
 *         '''initializes detector'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_3initDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_2initDetector, "Detector.initDetector(self)\ninitializes detector");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_3initDetector = {"initDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_3initDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_2initDetector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_3initDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initDetector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("initDetector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "initDetector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_2initDetector(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_2initDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initDetector", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":14
 *         pass
 * 
 *     def exitDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls exit method of detector'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_5exitDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_4exitDetector, "Detector.exitDetector(self)\ncalls exit method of detector");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_5exitDetector = {"exitDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_5exitDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_4exitDetector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_5exitDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitDetector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("exitDetector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "exitDetector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_4exitDetector(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_4exitDetector(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitDetector", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":18
 *         pass
 * 
 *     def propagatePartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''refines a partial decomposition inside detection loop'''
 *         return {}
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_7propagatePartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_6propagatePartialdec, "Detector.propagatePartialdec(self, detprobdata, workonpartialdec)\nrefines a partial decomposition inside detection loop");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_7propagatePartialdec = {"propagatePartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_7propagatePartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_6propagatePartialdec};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_7propagatePartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_detprobdata = 0;
  CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("propagatePartialdec (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detprobdata,&__pyx_n_s_workonpartialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detprobdata)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 18, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_workonpartialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 18, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("propagatePartialdec", 1, 2, 2, 1); __PYX_ERR(0, 18, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "propagatePartialdec") < 0)) __PYX_ERR(0, 18, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_detprobdata = values[0];
    __pyx_v_workonpartialdec = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("propagatePartialdec", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 18, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.propagatePartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_6propagatePartialdec(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), __pyx_v_detprobdata, __pyx_v_workonpartialdec);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_6propagatePartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec) {
  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("propagatePartialdec", 1);

  /* "src/pygcgopt/detector.pxi":20
 *     def propagatePartialdec(self, detprobdata, workonpartialdec):
 *         '''refines a partial decomposition inside detection loop'''
 *         return {}             # <<<<<<<<<<<<<<
 * 
 *     def finishPartialdec(self, detprobdata, workonpartialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":18
 *         pass
 * 
 *     def propagatePartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''refines a partial decomposition inside detection loop'''
 *         return {}
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.propagatePartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":22
 *         return {}
 * 
 *     def finishPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''completes a partial decomposition when called in detection loop'''
 *         return {}
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_9finishPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_8finishPartialdec, "Detector.finishPartialdec(self, detprobdata, workonpartialdec)\ncompletes a partial decomposition when called in detection loop");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_9finishPartialdec = {"finishPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_9finishPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_8finishPartialdec};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_9finishPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_detprobdata = 0;
  CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("finishPartialdec (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detprobdata,&__pyx_n_s_workonpartialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detprobdata)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_workonpartialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("finishPartialdec", 1, 2, 2, 1); __PYX_ERR(0, 22, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "finishPartialdec") < 0)) __PYX_ERR(0, 22, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_detprobdata = values[0];
    __pyx_v_workonpartialdec = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("finishPartialdec", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.finishPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_8finishPartialdec(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), __pyx_v_detprobdata, __pyx_v_workonpartialdec);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_8finishPartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec) {
  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("finishPartialdec", 1);

  /* "src/pygcgopt/detector.pxi":24
 *     def finishPartialdec(self, detprobdata, workonpartialdec):
 *         '''completes a partial decomposition when called in detection loop'''
 *         return {}             # <<<<<<<<<<<<<<
 * 
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":22
 *         return {}
 * 
 *     def finishPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''completes a partial decomposition when called in detection loop'''
 *         return {}
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.finishPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":26
 *         return {}
 * 
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''postprocess a complete decomposition, called after detection loop'''
 *         return {}
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_11postprocessPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_10postprocessPartialdec, "Detector.postprocessPartialdec(self, detprobdata, workonpartialdec)\npostprocess a complete decomposition, called after detection loop");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_11postprocessPartialdec = {"postprocessPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_11postprocessPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_10postprocessPartialdec};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_11postprocessPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_detprobdata = 0;
  CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("postprocessPartialdec (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detprobdata,&__pyx_n_s_workonpartialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detprobdata)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 26, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_workonpartialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 26, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("postprocessPartialdec", 1, 2, 2, 1); __PYX_ERR(0, 26, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "postprocessPartialdec") < 0)) __PYX_ERR(0, 26, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_detprobdata = values[0];
    __pyx_v_workonpartialdec = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("postprocessPartialdec", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 26, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.postprocessPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_10postprocessPartialdec(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), __pyx_v_detprobdata, __pyx_v_workonpartialdec);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_10postprocessPartialdec(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_detprobdata, CYTHON_UNUSED PyObject *__pyx_v_workonpartialdec) {
  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("postprocessPartialdec", 1);

  /* "src/pygcgopt/detector.pxi":28
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):
 *         '''postprocess a complete decomposition, called after detection loop'''
 *         return {}             # <<<<<<<<<<<<<<
 * 
 *     def setParamAggressive(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":26
 *         return {}
 * 
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''postprocess a complete decomposition, called after detection loop'''
 *         return {}
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.postprocessPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":30
 *         return {}
 * 
 *     def setParamAggressive(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting aggressive is chosen'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_13setParamAggressive(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_12setParamAggressive, "Detector.setParamAggressive(self)\ncalled if the detection emphasis setting aggressive is chosen");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_13setParamAggressive = {"setParamAggressive", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_13setParamAggressive, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_12setParamAggressive};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_13setParamAggressive(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamAggressive (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("setParamAggressive", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setParamAggressive", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_12setParamAggressive(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_12setParamAggressive(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamAggressive", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":34
 *         pass
 * 
 *     def setParamDefault(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting default is chosen'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_15setParamDefault(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_14setParamDefault, "Detector.setParamDefault(self)\ncalled if the detection emphasis setting default is chosen");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_15setParamDefault = {"setParamDefault", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_15setParamDefault, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_14setParamDefault};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_15setParamDefault(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamDefault (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("setParamDefault", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setParamDefault", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_14setParamDefault(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_14setParamDefault(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamDefault", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":38
 *         pass
 * 
 *     def setParamFast(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting fast is chosen'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_17setParamFast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_16setParamFast, "Detector.setParamFast(self)\ncalled if the detection emphasis setting fast is chosen");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_17setParamFast = {"setParamFast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_17setParamFast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_16setParamFast};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_17setParamFast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamFast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("setParamFast", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setParamFast", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_16setParamFast(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_16setParamFast(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setParamFast", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":3
 * cdef class Detector:
 *     """Base class of the Detector Plugin"""
 *     cdef public Model model             # <<<<<<<<<<<<<<
 *     cdef public str detectorname
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_5model___get__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_8Detector_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_8Detector_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_5model_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_8Detector_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(0, 3, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.model.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_8Detector_5model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_8Detector_5model_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_5model_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_8Detector_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None);

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

/* "src/pygcgopt/detector.pxi":4
 *     """Base class of the Detector Plugin"""
 *     cdef public Model model
 *     cdef public str detectorname             # <<<<<<<<<<<<<<
 * 
 *     def freeDetector(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname___get__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname___get__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->detectorname);
  __pyx_r = __pyx_v_self->detectorname;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_value))) __PYX_ERR(0, 4, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->detectorname);
  __Pyx_DECREF(__pyx_v_self->detectorname);
  __pyx_v_self->detectorname = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.detectorname.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_8Detector_12detectorname_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->detectorname);
  __Pyx_DECREF(__pyx_v_self->detectorname);
  __pyx_v_self->detectorname = ((PyObject*)Py_None);

  /* 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_8pygcgopt_3gcg_8Detector_19__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_18__reduce_cython__, "Detector.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_18__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_19__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_18__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_18__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__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;
  PyObject *__pyx_t_3 = NULL;
  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__", 1);

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

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.detectorname, self.model)
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

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

    /* "(tree fragment)":7
 *     state = (self.detectorname, self.model)
 *     _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.detectorname is not None or self.model is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, None), state
 */
  /*else*/ {
    __pyx_t_4 = (__pyx_v_self->detectorname != ((PyObject*)Py_None));
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (((PyObject *)__pyx_v_self->model) != Py_None);
    __pyx_t_2 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_2;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.detectorname is not None or self.model is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = self.detectorname is not None or self.model is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_Detector); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_229442799);
    __Pyx_GIVEREF(__pyx_int_229442799);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_229442799)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.detectorname is not None or self.model is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, None), state
 *     else:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Detector__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Detector); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_229442799);
    __Pyx_GIVEREF(__pyx_int_229442799);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_229442799)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.__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_Detector, (type(self), 0xdad04ef, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Detector__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_21__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8Detector_20__setstate_cython__, "Detector.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8Detector_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_20__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8Detector_21__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Detector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8Detector_20__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8Detector_20__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_Detector *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Detector__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_Detector__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_Detector, (type(self), 0xdad04ef, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Detector__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("pygcgopt.gcg.Detector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":43
 * 
 * 
 * cdef Detector get_py_detector(GCG_DETECTOR* detector):             # <<<<<<<<<<<<<<
 *     cdef GCG_DETECTORDATA* detectordata
 *     detectordata = GCGdetectorGetData(detector)
 */

static struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_f_8pygcgopt_3gcg_get_py_detector(GCG_DETECTOR *__pyx_v_detector) {
  GCG_DETECTORDATA *__pyx_v_detectordata;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("get_py_detector", 1);

  /* "src/pygcgopt/detector.pxi":45
 * cdef Detector get_py_detector(GCG_DETECTOR* detector):
 *     cdef GCG_DETECTORDATA* detectordata
 *     detectordata = GCGdetectorGetData(detector)             # <<<<<<<<<<<<<<
 *     py_detector = <Detector>detectordata
 *     return py_detector
 */
  __pyx_v_detectordata = GCGdetectorGetData(__pyx_v_detector);

  /* "src/pygcgopt/detector.pxi":46
 *     cdef GCG_DETECTORDATA* detectordata
 *     detectordata = GCGdetectorGetData(detector)
 *     py_detector = <Detector>detectordata             # <<<<<<<<<<<<<<
 *     return py_detector
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_detectordata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":47
 *     detectordata = GCGdetectorGetData(detector)
 *     py_detector = <Detector>detectordata
 *     return py_detector             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_py_detector);
  __pyx_r = __pyx_v_py_detector;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":43
 * 
 * 
 * cdef Detector get_py_detector(GCG_DETECTOR* detector):             # <<<<<<<<<<<<<<
 *     cdef GCG_DETECTORDATA* detectordata
 *     detectordata = GCGdetectorGetData(detector)
 */

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

/* "src/pygcgopt/detector.pxi":50
 * 
 * 
 * cdef tuple get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA* partialdecdetectiondata):             # <<<<<<<<<<<<<<
 *     detprobdata = DetProbData.create(partialdecdetectiondata.detprobdata)
 *     workonpartialdec = PartialDecomposition.create(partialdecdetectiondata.workonpartialdec)
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA *__pyx_v_partialdecdetectiondata) {
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_workonpartialdec = NULL;
  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_py_partialdec_detection_data", 1);

  /* "src/pygcgopt/detector.pxi":51
 * 
 * cdef tuple get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA* partialdecdetectiondata):
 *     detprobdata = DetProbData.create(partialdecdetectiondata.detprobdata)             # <<<<<<<<<<<<<<
 *     workonpartialdec = PartialDecomposition.create(partialdecdetectiondata.workonpartialdec)
 *     return detprobdata, workonpartialdec
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_11DetProbData_create(__pyx_v_partialdecdetectiondata->detprobdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_detprobdata = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":52
 * cdef tuple get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA* partialdecdetectiondata):
 *     detprobdata = DetProbData.create(partialdecdetectiondata.detprobdata)
 *     workonpartialdec = PartialDecomposition.create(partialdecdetectiondata.workonpartialdec)             # <<<<<<<<<<<<<<
 *     return detprobdata, workonpartialdec
 * 
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_v_partialdecdetectiondata->workonpartialdec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_workonpartialdec = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":53
 *     detprobdata = DetProbData.create(partialdecdetectiondata.detprobdata)
 *     workonpartialdec = PartialDecomposition.create(partialdecdetectiondata.workonpartialdec)
 *     return detprobdata, workonpartialdec             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_detprobdata);
  __Pyx_GIVEREF(__pyx_v_detprobdata);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_detprobdata)) __PYX_ERR(0, 53, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_workonpartialdec);
  __Pyx_GIVEREF(__pyx_v_workonpartialdec);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_workonpartialdec)) __PYX_ERR(0, 53, __pyx_L1_error);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":50
 * 
 * 
 * cdef tuple get_py_partialdec_detection_data(PARTIALDEC_DETECTION_DATA* partialdecdetectiondata):             # <<<<<<<<<<<<<<
 *     detprobdata = DetProbData.create(partialdecdetectiondata.detprobdata)
 *     workonpartialdec = PartialDecomposition.create(partialdecdetectiondata.workonpartialdec)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.get_py_partialdec_detection_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_workonpartialdec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":56
 * 
 * 
 * cdef wrap_detector_callback_result(Detector detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result, object result_dict, double detection_time):             # <<<<<<<<<<<<<<
 *     if result_dict is None or type(result_dict) is not dict:
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_wrap_detector_callback_result(struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector, PARTIALDEC_DETECTION_DATA *__pyx_v_partialdecdetectiondata, SCIP_RESULT *__pyx_v_result, PyObject *__pyx_v_result_dict, double __pyx_v_detection_time) {
  PyObject *__pyx_v_py_newpartialdecs = NULL;
  PyObject *__pyx_v_nnewpartialdecs = NULL;
  gcg::PARTIALDECOMP **__pyx_v_newpartialdecs;
  PyObject *__pyx_v_i = 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;
  unsigned int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  gcg::PARTIALDECOMP *__pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_t_14;
  SCIP_RESULT __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wrap_detector_callback_result", 1);

  /* "src/pygcgopt/detector.pxi":57
 * 
 * cdef wrap_detector_callback_result(Detector detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result, object result_dict, double detection_time):
 *     if result_dict is None or type(result_dict) is not dict:             # <<<<<<<<<<<<<<
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))
 * 
 */
  __pyx_t_2 = (__pyx_v_result_dict == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_result_dict)) != ((PyObject *)(&PyDict_Type)));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/detector.pxi":58
 * cdef wrap_detector_callback_result(Detector detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result, object result_dict, double detection_time):
 *     if result_dict is None or type(result_dict) is not dict:
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))             # <<<<<<<<<<<<<<
 * 
 *     py_newpartialdecs = result_dict.get("newpartialdecs", [])
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Detector_callback_returned_of_ty, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_result_dict, ((PyObject *)Py_TYPE(__pyx_v_result_dict))};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 58, __pyx_L1_error)

    /* "src/pygcgopt/detector.pxi":57
 * 
 * cdef wrap_detector_callback_result(Detector detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result, object result_dict, double detection_time):
 *     if result_dict is None or type(result_dict) is not dict:             # <<<<<<<<<<<<<<
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))
 * 
 */
  }

  /* "src/pygcgopt/detector.pxi":60
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))
 * 
 *     py_newpartialdecs = result_dict.get("newpartialdecs", [])             # <<<<<<<<<<<<<<
 *     if py_newpartialdecs is None or type(py_newpartialdecs) is not list:
 *         raise TypeError("The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.".format(py_newpartialdecs, type(py_newpartialdecs)))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_n_u_newpartialdecs, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_py_newpartialdecs = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/pygcgopt/detector.pxi":61
 * 
 *     py_newpartialdecs = result_dict.get("newpartialdecs", [])
 *     if py_newpartialdecs is None or type(py_newpartialdecs) is not list:             # <<<<<<<<<<<<<<
 *         raise TypeError("The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.".format(py_newpartialdecs, type(py_newpartialdecs)))
 * 
 */
  __pyx_t_2 = (__pyx_v_py_newpartialdecs == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_py_newpartialdecs)) != ((PyObject *)(&PyList_Type)));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L7_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/detector.pxi":62
 *     py_newpartialdecs = result_dict.get("newpartialdecs", [])
 *     if py_newpartialdecs is None or type(py_newpartialdecs) is not list:
 *         raise TypeError("The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.".format(py_newpartialdecs, type(py_newpartialdecs)))             # <<<<<<<<<<<<<<
 * 
 *     nnewpartialdecs = len(py_newpartialdecs)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_value_of_the_key_newpartiald, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_py_newpartialdecs, ((PyObject *)Py_TYPE(__pyx_v_py_newpartialdecs))};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __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, 62, __pyx_L1_error)

    /* "src/pygcgopt/detector.pxi":61
 * 
 *     py_newpartialdecs = result_dict.get("newpartialdecs", [])
 *     if py_newpartialdecs is None or type(py_newpartialdecs) is not list:             # <<<<<<<<<<<<<<
 *         raise TypeError("The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.".format(py_newpartialdecs, type(py_newpartialdecs)))
 * 
 */
  }

  /* "src/pygcgopt/detector.pxi":64
 *         raise TypeError("The value of the key 'newpartialdecs' is '{}' of type '{}'. Expected a list of 'PartialDecomposition' objects.".format(py_newpartialdecs, type(py_newpartialdecs)))
 * 
 *     nnewpartialdecs = len(py_newpartialdecs)             # <<<<<<<<<<<<<<
 *     cdef PARTIALDECOMP** newpartialdecs = <PARTIALDECOMP**>malloc(nnewpartialdecs * sizeof(PARTIALDECOMP*))
 *     for i in range(nnewpartialdecs):
 */
  __pyx_t_8 = PyObject_Length(__pyx_v_py_newpartialdecs); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 64, __pyx_L1_error)
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_nnewpartialdecs = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/pygcgopt/detector.pxi":65
 * 
 *     nnewpartialdecs = len(py_newpartialdecs)
 *     cdef PARTIALDECOMP** newpartialdecs = <PARTIALDECOMP**>malloc(nnewpartialdecs * sizeof(PARTIALDECOMP*))             # <<<<<<<<<<<<<<
 *     for i in range(nnewpartialdecs):
 *         py_newpartialdecs[i].sort()
 */
  __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(gcg::PARTIALDECOMP *))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Multiply(__pyx_v_nnewpartialdecs, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_newpartialdecs = ((gcg::PARTIALDECOMP **)malloc(__pyx_t_9));

  /* "src/pygcgopt/detector.pxi":66
 *     nnewpartialdecs = len(py_newpartialdecs)
 *     cdef PARTIALDECOMP** newpartialdecs = <PARTIALDECOMP**>malloc(nnewpartialdecs * sizeof(PARTIALDECOMP*))
 *     for i in range(nnewpartialdecs):             # <<<<<<<<<<<<<<
 *         py_newpartialdecs[i].sort()
 *         # TODO: It would be nice if the user could set a custom chain info
 */
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nnewpartialdecs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  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_8 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 66, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 66, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(0, 66, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_10(__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, 66, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/pygcgopt/detector.pxi":67
 *     cdef PARTIALDECOMP** newpartialdecs = <PARTIALDECOMP**>malloc(nnewpartialdecs * sizeof(PARTIALDECOMP*))
 *     for i in range(nnewpartialdecs):
 *         py_newpartialdecs[i].sort()             # <<<<<<<<<<<<<<
 *         # TODO: It would be nice if the user could set a custom chain info
 *         py_newpartialdecs[i].addDetectorChainInfo(detector.detectorname)
 */
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_py_newpartialdecs, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sort); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __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;

    /* "src/pygcgopt/detector.pxi":69
 *         py_newpartialdecs[i].sort()
 *         # TODO: It would be nice if the user could set a custom chain info
 *         py_newpartialdecs[i].addDetectorChainInfo(detector.detectorname)             # <<<<<<<<<<<<<<
 *         py_newpartialdecs[i].addClockTime(detection_time / nnewpartialdecs)
 *         newpartialdecs[i] = (<PartialDecomposition>py_newpartialdecs[i]).thisptr
 */
    __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_py_newpartialdecs, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_addDetectorChainInfo); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_detector->detectorname};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/pygcgopt/detector.pxi":70
 *         # TODO: It would be nice if the user could set a custom chain info
 *         py_newpartialdecs[i].addDetectorChainInfo(detector.detectorname)
 *         py_newpartialdecs[i].addClockTime(detection_time / nnewpartialdecs)             # <<<<<<<<<<<<<<
 *         newpartialdecs[i] = (<PartialDecomposition>py_newpartialdecs[i]).thisptr
 *     partialdecdetectiondata.newpartialdecs = newpartialdecs
 */
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_py_newpartialdecs, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_addClockTime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_detection_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_v_nnewpartialdecs); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __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;

    /* "src/pygcgopt/detector.pxi":71
 *         py_newpartialdecs[i].addDetectorChainInfo(detector.detectorname)
 *         py_newpartialdecs[i].addClockTime(detection_time / nnewpartialdecs)
 *         newpartialdecs[i] = (<PartialDecomposition>py_newpartialdecs[i]).thisptr             # <<<<<<<<<<<<<<
 *     partialdecdetectiondata.newpartialdecs = newpartialdecs
 *     partialdecdetectiondata.nnewpartialdecs = nnewpartialdecs
 */
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_py_newpartialdecs, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_4)->thisptr;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error)
    (__pyx_v_newpartialdecs[__pyx_t_13]) = __pyx_t_12;

    /* "src/pygcgopt/detector.pxi":66
 *     nnewpartialdecs = len(py_newpartialdecs)
 *     cdef PARTIALDECOMP** newpartialdecs = <PARTIALDECOMP**>malloc(nnewpartialdecs * sizeof(PARTIALDECOMP*))
 *     for i in range(nnewpartialdecs):             # <<<<<<<<<<<<<<
 *         py_newpartialdecs[i].sort()
 *         # TODO: It would be nice if the user could set a custom chain info
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/detector.pxi":72
 *         py_newpartialdecs[i].addClockTime(detection_time / nnewpartialdecs)
 *         newpartialdecs[i] = (<PartialDecomposition>py_newpartialdecs[i]).thisptr
 *     partialdecdetectiondata.newpartialdecs = newpartialdecs             # <<<<<<<<<<<<<<
 *     partialdecdetectiondata.nnewpartialdecs = nnewpartialdecs
 *     partialdecdetectiondata.detectiontime = detection_time
 */
  __pyx_v_partialdecdetectiondata->newpartialdecs = __pyx_v_newpartialdecs;

  /* "src/pygcgopt/detector.pxi":73
 *         newpartialdecs[i] = (<PartialDecomposition>py_newpartialdecs[i]).thisptr
 *     partialdecdetectiondata.newpartialdecs = newpartialdecs
 *     partialdecdetectiondata.nnewpartialdecs = nnewpartialdecs             # <<<<<<<<<<<<<<
 *     partialdecdetectiondata.detectiontime = detection_time
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 */
  __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_nnewpartialdecs); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L1_error)
  __pyx_v_partialdecdetectiondata->nnewpartialdecs = __pyx_t_14;

  /* "src/pygcgopt/detector.pxi":74
 *     partialdecdetectiondata.newpartialdecs = newpartialdecs
 *     partialdecdetectiondata.nnewpartialdecs = nnewpartialdecs
 *     partialdecdetectiondata.detectiontime = detection_time             # <<<<<<<<<<<<<<
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 * 
 */
  __pyx_v_partialdecdetectiondata->detectiontime = __pyx_v_detection_time;

  /* "src/pygcgopt/detector.pxi":75
 *     partialdecdetectiondata.nnewpartialdecs = nnewpartialdecs
 *     partialdecdetectiondata.detectiontime = detection_time
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyInt_From_SCIP_RESULT(((SCIP_RESULT)(__pyx_v_result[0]))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_n_u_result, __pyx_t_7};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_15 = __Pyx_PyInt_As_SCIP_RESULT(__pyx_t_3); if (unlikely((__pyx_t_15 == ((SCIP_RESULT)-1)) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  (__pyx_v_result[0]) = __pyx_t_15;

  /* "src/pygcgopt/detector.pxi":56
 * 
 * 
 * cdef wrap_detector_callback_result(Detector detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result, object result_dict, double detection_time):             # <<<<<<<<<<<<<<
 *     if result_dict is None or type(result_dict) is not dict:
 *         raise TypeError("Detector callback returned '{}' of type '{}'. Expected a dictionary with optional keys 'newpartialdecs' and 'result'.".format(result_dict, type(result_dict)))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __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_AddTraceback("pygcgopt.gcg.wrap_detector_callback_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_newpartialdecs);
  __Pyx_XDECREF(__pyx_v_nnewpartialdecs);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":78
 * 
 * 
 * cdef SCIP_RETCODE PyDetectorFree (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.freeDetector()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorFree(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorFree", 0);

  /* "src/pygcgopt/detector.pxi":79
 * 
 * cdef SCIP_RETCODE PyDetectorFree (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     py_detector.freeDetector()
 *     Py_DECREF(py_detector)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":80
 * cdef SCIP_RETCODE PyDetectorFree (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     py_detector.freeDetector()             # <<<<<<<<<<<<<<
 *     Py_DECREF(py_detector)
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_freeDetector); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":81
 *     py_detector = get_py_detector(detector)
 *     py_detector.freeDetector()
 *     Py_DECREF(py_detector)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_py_detector));

  /* "src/pygcgopt/detector.pxi":82
 *     py_detector.freeDetector()
 *     Py_DECREF(py_detector)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorInit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":78
 * 
 * 
 * cdef SCIP_RETCODE PyDetectorFree (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.freeDetector()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorFree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":84
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorInit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.initDetector()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorInit(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorInit", 0);

  /* "src/pygcgopt/detector.pxi":85
 * 
 * cdef SCIP_RETCODE PyDetectorInit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     py_detector.initDetector()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":86
 * cdef SCIP_RETCODE PyDetectorInit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     py_detector.initDetector()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_initDetector); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":87
 *     py_detector = get_py_detector(detector)
 *     py_detector.initDetector()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorExit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":84
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorInit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.initDetector()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorInit", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":89
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorExit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.exitDetector()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorExit(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorExit", 0);

  /* "src/pygcgopt/detector.pxi":90
 * 
 * cdef SCIP_RETCODE PyDetectorExit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     py_detector.exitDetector()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":91
 * cdef SCIP_RETCODE PyDetectorExit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     py_detector.exitDetector()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_exitDetector); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":92
 *     py_detector = get_py_detector(detector)
 *     py_detector.exitDetector()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorPropagatePartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":89
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorExit (SCIP* scip, GCG_DETECTOR* detector) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     py_detector.exitDetector()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorExit", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":94
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorPropagatePartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorPropagatePartialdec(SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, PARTIALDEC_DETECTION_DATA *__pyx_v_partialdecdetectiondata, SCIP_RESULT *__pyx_v_result) {
  SCIP_CLOCK *__pyx_v_clock;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_workonpartialdec = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  double __pyx_v_detection_time;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  SCIP_CLOCK *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  double __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorPropagatePartialdec", 0);

  /* "src/pygcgopt/detector.pxi":95
 * 
 * cdef SCIP_RETCODE PyDetectorPropagatePartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)             # <<<<<<<<<<<<<<
 * 
 *     py_detector = get_py_detector(detector)
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_start_new_clock(__pyx_v_scip); if (unlikely(__pyx_t_1 == ((SCIP_CLOCK *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
  __pyx_v_clock = __pyx_t_1;

  /* "src/pygcgopt/detector.pxi":97
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":98
 * 
 *     py_detector = get_py_detector(detector)
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)             # <<<<<<<<<<<<<<
 * 
 *     result_dict = py_detector.propagatePartialdec(detprobdata, workonpartialdec)
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_get_py_partialdec_detection_data(__pyx_v_partialdecdetectiondata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(__pyx_t_2 != Py_None)) {
    PyObject* sequence = __pyx_t_2;
    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, 98, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 98, __pyx_L1_error)
  }
  __pyx_v_detprobdata = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_workonpartialdec = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/pygcgopt/detector.pxi":100
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 *     result_dict = py_detector.propagatePartialdec(detprobdata, workonpartialdec)             # <<<<<<<<<<<<<<
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_propagatePartialdec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_detprobdata, __pyx_v_workonpartialdec};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_result_dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":102
 *     result_dict = py_detector.propagatePartialdec(detprobdata, workonpartialdec)
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)             # <<<<<<<<<<<<<<
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 */
  __pyx_t_6 = __pyx_f_8pygcgopt_3gcg_stop_and_free_clock(__pyx_v_scip, __pyx_v_clock); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L1_error)
  __pyx_v_detection_time = __pyx_t_6;

  /* "src/pygcgopt/detector.pxi":103
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)             # <<<<<<<<<<<<<<
 * 
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_wrap_detector_callback_result(__pyx_v_py_detector, __pyx_v_partialdecdetectiondata, __pyx_v_result, __pyx_v_result_dict, __pyx_v_detection_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":105
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorFinishPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":94
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorPropagatePartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorPropagatePartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_workonpartialdec);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":107
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorFinishPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorFinishPartialdec(SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, PARTIALDEC_DETECTION_DATA *__pyx_v_partialdecdetectiondata, SCIP_RESULT *__pyx_v_result) {
  SCIP_CLOCK *__pyx_v_clock;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_workonpartialdec = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  double __pyx_v_detection_time;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  SCIP_CLOCK *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  double __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorFinishPartialdec", 0);

  /* "src/pygcgopt/detector.pxi":108
 * 
 * cdef SCIP_RETCODE PyDetectorFinishPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)             # <<<<<<<<<<<<<<
 * 
 *     py_detector = get_py_detector(detector)
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_start_new_clock(__pyx_v_scip); if (unlikely(__pyx_t_1 == ((SCIP_CLOCK *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L1_error)
  __pyx_v_clock = __pyx_t_1;

  /* "src/pygcgopt/detector.pxi":110
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":111
 * 
 *     py_detector = get_py_detector(detector)
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)             # <<<<<<<<<<<<<<
 * 
 *     result_dict = py_detector.finishPartialdec(detprobdata, workonpartialdec)
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_get_py_partialdec_detection_data(__pyx_v_partialdecdetectiondata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(__pyx_t_2 != Py_None)) {
    PyObject* sequence = __pyx_t_2;
    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, 111, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 111, __pyx_L1_error)
  }
  __pyx_v_detprobdata = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_workonpartialdec = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/pygcgopt/detector.pxi":113
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 *     result_dict = py_detector.finishPartialdec(detprobdata, workonpartialdec)             # <<<<<<<<<<<<<<
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_finishPartialdec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_detprobdata, __pyx_v_workonpartialdec};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_result_dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":115
 *     result_dict = py_detector.finishPartialdec(detprobdata, workonpartialdec)
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)             # <<<<<<<<<<<<<<
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 */
  __pyx_t_6 = __pyx_f_8pygcgopt_3gcg_stop_and_free_clock(__pyx_v_scip, __pyx_v_clock); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L1_error)
  __pyx_v_detection_time = __pyx_t_6;

  /* "src/pygcgopt/detector.pxi":116
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)             # <<<<<<<<<<<<<<
 * 
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_wrap_detector_callback_result(__pyx_v_py_detector, __pyx_v_partialdecdetectiondata, __pyx_v_result, __pyx_v_result_dict, __pyx_v_detection_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":118
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorPostprocessPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":107
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorFinishPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorFinishPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_workonpartialdec);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":120
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorPostprocessPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorPostprocessPartialdec(SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, PARTIALDEC_DETECTION_DATA *__pyx_v_partialdecdetectiondata, SCIP_RESULT *__pyx_v_result) {
  SCIP_CLOCK *__pyx_v_clock;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_workonpartialdec = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  double __pyx_v_detection_time;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  SCIP_CLOCK *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  double __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorPostprocessPartialdec", 0);

  /* "src/pygcgopt/detector.pxi":121
 * 
 * cdef SCIP_RETCODE PyDetectorPostprocessPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)             # <<<<<<<<<<<<<<
 * 
 *     py_detector = get_py_detector(detector)
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_start_new_clock(__pyx_v_scip); if (unlikely(__pyx_t_1 == ((SCIP_CLOCK *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error)
  __pyx_v_clock = __pyx_t_1;

  /* "src/pygcgopt/detector.pxi":123
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":124
 * 
 *     py_detector = get_py_detector(detector)
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)             # <<<<<<<<<<<<<<
 * 
 *     result_dict = py_detector.postprocessPartialdec(detprobdata, workonpartialdec)
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_get_py_partialdec_detection_data(__pyx_v_partialdecdetectiondata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(__pyx_t_2 != Py_None)) {
    PyObject* sequence = __pyx_t_2;
    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, 124, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 124, __pyx_L1_error)
  }
  __pyx_v_detprobdata = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_workonpartialdec = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/pygcgopt/detector.pxi":126
 *     detprobdata, workonpartialdec = get_py_partialdec_detection_data(partialdecdetectiondata)
 * 
 *     result_dict = py_detector.postprocessPartialdec(detprobdata, workonpartialdec)             # <<<<<<<<<<<<<<
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_postprocessPartialdec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_detprobdata, __pyx_v_workonpartialdec};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_result_dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":128
 *     result_dict = py_detector.postprocessPartialdec(detprobdata, workonpartialdec)
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)             # <<<<<<<<<<<<<<
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 */
  __pyx_t_6 = __pyx_f_8pygcgopt_3gcg_stop_and_free_clock(__pyx_v_scip, __pyx_v_clock); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 128, __pyx_L1_error)
  __pyx_v_detection_time = __pyx_t_6;

  /* "src/pygcgopt/detector.pxi":129
 * 
 *     cdef double detection_time = stop_and_free_clock(scip, clock)
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)             # <<<<<<<<<<<<<<
 * 
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_wrap_detector_callback_result(__pyx_v_py_detector, __pyx_v_partialdecdetectiondata, __pyx_v_result, __pyx_v_result_dict, __pyx_v_detection_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":131
 *     wrap_detector_callback_result(py_detector, partialdecdetectiondata, result, result_dict, detection_time)
 * 
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamAggressive (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":120
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorPostprocessPartialdec (SCIP* scip, GCG_DETECTOR* detector, PARTIALDEC_DETECTION_DATA* partialdecdetectiondata, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock = start_new_clock(scip)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyDetectorPostprocessPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_workonpartialdec);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":133
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamAggressive (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamAggressive() or {}
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamAggressive(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, SCIP_RESULT *__pyx_v_result) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  SCIP_RESULT __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorSetParamAggressive", 0);

  /* "src/pygcgopt/detector.pxi":134
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamAggressive (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     result_dict = py_detector.setParamAggressive() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":135
 * cdef SCIP_RETCODE PyDetectorSetParamAggressive (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamAggressive() or {}             # <<<<<<<<<<<<<<
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_setParamAggressive); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 135, __pyx_L1_error)
  if (!__pyx_t_6) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":136
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamAggressive() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RESULT(((SCIP_RESULT)(__pyx_v_result[0]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_n_u_result, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __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, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_SCIP_RESULT(__pyx_t_1); if (unlikely((__pyx_t_7 == ((SCIP_RESULT)-1)) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  (__pyx_v_result[0]) = __pyx_t_7;

  /* "src/pygcgopt/detector.pxi":137
 *     result_dict = py_detector.setParamAggressive() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamDefault (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":133
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamAggressive (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamAggressive() or {}
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyDetectorSetParamAggressive", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":139
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamDefault (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamDefault() or {}
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamDefault(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, SCIP_RESULT *__pyx_v_result) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  SCIP_RESULT __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorSetParamDefault", 0);

  /* "src/pygcgopt/detector.pxi":140
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamDefault (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     result_dict = py_detector.setParamDefault() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":141
 * cdef SCIP_RETCODE PyDetectorSetParamDefault (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamDefault() or {}             # <<<<<<<<<<<<<<
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_setParamDefault); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 141, __pyx_L1_error)
  if (!__pyx_t_6) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":142
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamDefault() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RESULT(((SCIP_RESULT)(__pyx_v_result[0]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_n_u_result, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __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, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_SCIP_RESULT(__pyx_t_1); if (unlikely((__pyx_t_7 == ((SCIP_RESULT)-1)) && PyErr_Occurred())) __PYX_ERR(0, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  (__pyx_v_result[0]) = __pyx_t_7;

  /* "src/pygcgopt/detector.pxi":143
 *     result_dict = py_detector.setParamDefault() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamFast (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":139
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamDefault (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamDefault() or {}
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyDetectorSetParamDefault", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/detector.pxi":145
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamFast (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamFast() or {}
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamFast(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_DETECTOR *__pyx_v_detector, SCIP_RESULT *__pyx_v_result) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_py_detector = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  SCIP_RESULT __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyDetectorSetParamFast", 0);

  /* "src/pygcgopt/detector.pxi":146
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamFast (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)             # <<<<<<<<<<<<<<
 *     result_dict = py_detector.setParamFast() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_detector(__pyx_v_detector)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":147
 * cdef SCIP_RETCODE PyDetectorSetParamFast (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamFast() or {}             # <<<<<<<<<<<<<<
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_detector), __pyx_n_s_setParamFast); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 147, __pyx_L1_error)
  if (!__pyx_t_6) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detector.pxi":148
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamFast() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RESULT(((SCIP_RESULT)(__pyx_v_result[0]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_n_u_result, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __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, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_SCIP_RESULT(__pyx_t_1); if (unlikely((__pyx_t_7 == ((SCIP_RESULT)-1)) && PyErr_Occurred())) __PYX_ERR(0, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  (__pyx_v_result[0]) = __pyx_t_7;

  /* "src/pygcgopt/detector.pxi":149
 *     result_dict = py_detector.setParamFast() or {}
 *     result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/detector.pxi":145
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyDetectorSetParamFast (SCIP* scip, GCG_DETECTOR* detector, SCIP_RESULT* result) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_detector = get_py_detector(detector)
 *     result_dict = py_detector.setParamFast() or {}
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyDetectorSetParamFast", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_detector);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":7
 *     cdef public str solvername
 * 
 *     def freeSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_1freeSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_freeSolver, "PricingSolver.freeSolver(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_1freeSolver = {"freeSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_1freeSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_freeSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_1freeSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("freeSolver", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "freeSolver", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_freeSolver(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_freeSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeSolver", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":10
 *         pass
 * 
 *     def initSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_3initSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_2initSolver, "PricingSolver.initSolver(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_3initSolver = {"initSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_3initSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_2initSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_3initSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("initSolver", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "initSolver", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_2initSolver(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_2initSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initSolver", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":13
 *         pass
 * 
 *     def exitSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5exitSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_4exitSolver, "PricingSolver.exitSolver(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_5exitSolver = {"exitSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5exitSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_4exitSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5exitSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("exitSolver", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "exitSolver", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_4exitSolver(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_4exitSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitSolver", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":16
 *         pass
 * 
 *     def initSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_7initSolution(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_6initSolution, "PricingSolver.initSolution(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_7initSolution = {"initSolution", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_7initSolution, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_6initSolution};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_7initSolution(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initSolution (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("initSolution", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "initSolution", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_6initSolution(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_6initSolution(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initSolution", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":19
 *         pass
 * 
 *     def exitSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_9exitSolution(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_8exitSolution, "PricingSolver.exitSolution(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_9exitSolution = {"exitSolution", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_9exitSolution, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_8exitSolution};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_9exitSolution(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitSolution (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("exitSolution", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "exitSolution", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_8exitSolution(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_8exitSolution(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exitSolution", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":22
 *         pass
 * 
 *     def updateSolver(self, pricingprob, probnr, varobjschanged, varbndschanged, consschanged):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_11updateSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_10updateSolver, "PricingSolver.updateSolver(self, pricingprob, probnr, varobjschanged, varbndschanged, consschanged)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_11updateSolver = {"updateSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_11updateSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_10updateSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_11updateSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_pricingprob = 0;
  CYTHON_UNUSED PyObject *__pyx_v_probnr = 0;
  CYTHON_UNUSED PyObject *__pyx_v_varobjschanged = 0;
  CYTHON_UNUSED PyObject *__pyx_v_varbndschanged = 0;
  CYTHON_UNUSED PyObject *__pyx_v_consschanged = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("updateSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricingprob,&__pyx_n_s_probnr,&__pyx_n_s_varobjschanged,&__pyx_n_s_varbndschanged,&__pyx_n_s_consschanged,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricingprob)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 22, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_probnr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("updateSolver", 1, 5, 5, 1); __PYX_ERR(7, 22, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varobjschanged)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("updateSolver", 1, 5, 5, 2); __PYX_ERR(7, 22, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varbndschanged)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("updateSolver", 1, 5, 5, 3); __PYX_ERR(7, 22, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consschanged)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("updateSolver", 1, 5, 5, 4); __PYX_ERR(7, 22, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "updateSolver") < 0)) __PYX_ERR(7, 22, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
      values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
    }
    __pyx_v_pricingprob = values[0];
    __pyx_v_probnr = values[1];
    __pyx_v_varobjschanged = values[2];
    __pyx_v_varbndschanged = values[3];
    __pyx_v_consschanged = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("updateSolver", 1, 5, 5, __pyx_nargs); __PYX_ERR(7, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.updateSolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10updateSolver(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), __pyx_v_pricingprob, __pyx_v_probnr, __pyx_v_varobjschanged, __pyx_v_varbndschanged, __pyx_v_consschanged);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_10updateSolver(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_varobjschanged, CYTHON_UNUSED PyObject *__pyx_v_varbndschanged, CYTHON_UNUSED PyObject *__pyx_v_consschanged) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("updateSolver", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":25
 *         pass
 * 
 *     def solve(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_13solve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_12solve, "PricingSolver.solve(self, pricingprob, probnr, dualsolconv)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_13solve = {"solve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_13solve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_12solve};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_13solve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_pricingprob = 0;
  CYTHON_UNUSED PyObject *__pyx_v_probnr = 0;
  CYTHON_UNUSED PyObject *__pyx_v_dualsolconv = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("solve (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricingprob,&__pyx_n_s_probnr,&__pyx_n_s_dualsolconv,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricingprob)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 25, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_probnr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 25, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("solve", 1, 3, 3, 1); __PYX_ERR(7, 25, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dualsolconv)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 25, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("solve", 1, 3, 3, 2); __PYX_ERR(7, 25, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "solve") < 0)) __PYX_ERR(7, 25, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_pricingprob = values[0];
    __pyx_v_probnr = values[1];
    __pyx_v_dualsolconv = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("solve", 1, 3, 3, __pyx_nargs); __PYX_ERR(7, 25, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.solve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_12solve(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), __pyx_v_pricingprob, __pyx_v_probnr, __pyx_v_dualsolconv);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_12solve(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_dualsolconv) {
  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("solve", 1);

  /* "src/pygcgopt/pricing_solver.pxi":26
 * 
 *     def solve(self, pricingprob, probnr, dualsolconv):
 *         return {}             # <<<<<<<<<<<<<<
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":25
 *         pass
 * 
 *     def solve(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.solve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":28
 *         return {}
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic, "PricingSolver.solveHeuristic(self, pricingprob, probnr, dualsolconv)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic = {"solveHeuristic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_pricingprob = 0;
  CYTHON_UNUSED PyObject *__pyx_v_probnr = 0;
  CYTHON_UNUSED PyObject *__pyx_v_dualsolconv = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("solveHeuristic (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricingprob,&__pyx_n_s_probnr,&__pyx_n_s_dualsolconv,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricingprob)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 28, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_probnr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("solveHeuristic", 1, 3, 3, 1); __PYX_ERR(7, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dualsolconv)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 28, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("solveHeuristic", 1, 3, 3, 2); __PYX_ERR(7, 28, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "solveHeuristic") < 0)) __PYX_ERR(7, 28, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_pricingprob = values[0];
    __pyx_v_probnr = values[1];
    __pyx_v_dualsolconv = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("solveHeuristic", 1, 3, 3, __pyx_nargs); __PYX_ERR(7, 28, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.solveHeuristic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), __pyx_v_pricingprob, __pyx_v_probnr, __pyx_v_dualsolconv);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_pricingprob, CYTHON_UNUSED PyObject *__pyx_v_probnr, CYTHON_UNUSED PyObject *__pyx_v_dualsolconv) {
  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("solveHeuristic", 1);

  /* "src/pygcgopt/pricing_solver.pxi":29
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):
 *         return {}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":28
 *         return {}
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.solveHeuristic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":4
 *     """Base class of the Pricing Solver Plugin"""
 * 
 *     cdef public Model model             # <<<<<<<<<<<<<<
 *     cdef public str solvername
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model___get__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(7, 4, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.model.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None);

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

/* "src/pygcgopt/pricing_solver.pxi":5
 * 
 *     cdef public Model model
 *     cdef public str solvername             # <<<<<<<<<<<<<<
 * 
 *     def freeSolver(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername___get__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername___get__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->solvername);
  __pyx_r = __pyx_v_self->solvername;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_value))) __PYX_ERR(7, 5, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->solvername);
  __Pyx_DECREF(__pyx_v_self->solvername);
  __pyx_v_self->solvername = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.solvername.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_13PricingSolver_10solvername_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->solvername);
  __Pyx_DECREF(__pyx_v_self->solvername);
  __pyx_v_self->solvername = ((PyObject*)Py_None);

  /* 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_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__, "PricingSolver.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__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;
  PyObject *__pyx_t_3 = NULL;
  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__", 1);

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

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.model, self.solvername)
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

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

    /* "(tree fragment)":7
 *     state = (self.model, self.solvername)
 *     _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.model is not None or self.solvername is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, None), state
 */
  /*else*/ {
    __pyx_t_4 = (((PyObject *)__pyx_v_self->model) != Py_None);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->solvername != ((PyObject*)Py_None));
    __pyx_t_2 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_2;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.solvername is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = self.model is not None or self.solvername is not None
 *     if use_setstate:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_PricingSolver); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_160002037);
    __Pyx_GIVEREF(__pyx_int_160002037);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_160002037)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.solvername is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, None), state
 *     else:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PricingSolver__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_PricingSolver); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_160002037);
    __Pyx_GIVEREF(__pyx_int_160002037);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_160002037)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.__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_PricingSolver, (type(self), 0x9896ff5, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PricingSolver__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__, "PricingSolver.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PricingSolver.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PricingSolver__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PricingSolver__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_PricingSolver, (type(self), 0x9896ff5, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PricingSolver__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("pygcgopt.gcg.PricingSolver.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":32
 * 
 * 
 * cdef PricingSolver get_py_pricing_solver(GCG_SOLVER* pricingSolver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SOLVERDATA* solverdata
 *     solverdata = GCGsolverGetData(pricingSolver)
 */

static struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(GCG_SOLVER *__pyx_v_pricingSolver) {
  GCG_SOLVERDATA *__pyx_v_solverdata;
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("get_py_pricing_solver", 0);

  /* "src/pygcgopt/pricing_solver.pxi":34
 * cdef PricingSolver get_py_pricing_solver(GCG_SOLVER* pricingSolver) noexcept with gil:
 *     cdef GCG_SOLVERDATA* solverdata
 *     solverdata = GCGsolverGetData(pricingSolver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver = <PricingSolver>solverdata
 *     return py_pricing_solver
 */
  __pyx_v_solverdata = GCGsolverGetData(__pyx_v_pricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":35
 *     cdef GCG_SOLVERDATA* solverdata
 *     solverdata = GCGsolverGetData(pricingSolver)
 *     py_pricing_solver = <PricingSolver>solverdata             # <<<<<<<<<<<<<<
 *     return py_pricing_solver
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_solverdata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":36
 *     solverdata = GCGsolverGetData(pricingSolver)
 *     py_pricing_solver = <PricingSolver>solverdata
 *     return py_pricing_solver             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverFree (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_py_pricing_solver);
  __pyx_r = __pyx_v_py_pricing_solver;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":32
 * 
 * 
 * cdef PricingSolver get_py_pricing_solver(GCG_SOLVER* pricingSolver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SOLVERDATA* solverdata
 *     solverdata = GCGsolverGetData(pricingSolver)
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":38
 *     return py_pricing_solver
 * 
 * cdef SCIP_RETCODE PyPricingSolverFree (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.freeSolver()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverFree(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SOLVER *__pyx_v_solver) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverFree", 0);

  /* "src/pygcgopt/pricing_solver.pxi":39
 * 
 * cdef SCIP_RETCODE PyPricingSolverFree (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.freeSolver()
 *     Py_DECREF(py_pricing_solver)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":40
 * cdef SCIP_RETCODE PyPricingSolverFree (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.freeSolver()             # <<<<<<<<<<<<<<
 *     Py_DECREF(py_pricing_solver)
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_freeSolver); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":41
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.freeSolver()
 *     Py_DECREF(py_pricing_solver)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_py_pricing_solver));

  /* "src/pygcgopt/pricing_solver.pxi":42
 *     py_pricing_solver.freeSolver()
 *     Py_DECREF(py_pricing_solver)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverInit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":38
 *     return py_pricing_solver
 * 
 * cdef SCIP_RETCODE PyPricingSolverFree (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.freeSolver()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverFree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":44
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverInit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolver()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverInit(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SOLVER *__pyx_v_solver) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverInit", 0);

  /* "src/pygcgopt/pricing_solver.pxi":45
 * 
 * cdef SCIP_RETCODE PyPricingSolverInit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.initSolver()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":46
 * cdef SCIP_RETCODE PyPricingSolverInit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolver()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_initSolver); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":47
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolver()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverExit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":44
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverInit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolver()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverInit", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":49
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverExit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolver()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverExit(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SOLVER *__pyx_v_solver) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverExit", 0);

  /* "src/pygcgopt/pricing_solver.pxi":50
 * 
 * cdef SCIP_RETCODE PyPricingSolverExit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.exitSolver()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":51
 * cdef SCIP_RETCODE PyPricingSolverExit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolver()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_exitSolver); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":52
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolver()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverInitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":49
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverExit (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolver()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverExit", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":54
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverInitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolution()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverInitSol(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SOLVER *__pyx_v_solver) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverInitSol", 0);

  /* "src/pygcgopt/pricing_solver.pxi":55
 * 
 * cdef SCIP_RETCODE PyPricingSolverInitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.initSolution()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":56
 * cdef SCIP_RETCODE PyPricingSolverInitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolution()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_initSolution); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":57
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolution()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverExitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":54
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverInitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.initSolution()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverInitSol", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":59
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverExitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolution()
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverExitSol(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SOLVER *__pyx_v_solver) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverExitSol", 0);

  /* "src/pygcgopt/pricing_solver.pxi":60
 * 
 * cdef SCIP_RETCODE PyPricingSolverExitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.exitSolution()
 *     return SCIP_OKAY
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":61
 * cdef SCIP_RETCODE PyPricingSolverExitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolution()             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_exitSolution); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":62
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolution()
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverUpdate (SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":59
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverExitSol (SCIP* scip, GCG_SOLVER* solver) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricing_solver.exitSolution()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverExitSol", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":64
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverUpdate (SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverUpdate(SCIP *__pyx_v_pricingprob, GCG_SOLVER *__pyx_v_solver, int __pyx_v_probnr, SCIP_Bool __pyx_v_varobjschanged, SCIP_Bool __pyx_v_varbndschanged, SCIP_Bool __pyx_v_consschanged) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  PyObject *__pyx_v_py_pricingprob = NULL;
  SCIP_RETCODE __pyx_r;
  __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;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverUpdate", 0);

  /* "src/pygcgopt/pricing_solver.pxi":65
 * 
 * cdef SCIP_RETCODE PyPricingSolverUpdate (SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     py_pricing_solver.updateSolver(py_pricingprob, probnr, varobjschanged, varbndschanged, consschanged)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":66
 * cdef SCIP_RETCODE PyPricingSolverUpdate (SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)             # <<<<<<<<<<<<<<
 *     py_pricing_solver.updateSolver(py_pricingprob, probnr, varobjschanged, varbndschanged, consschanged)
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create(__pyx_v_pricingprob); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricingprob = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":67
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     py_pricing_solver.updateSolver(py_pricingprob, probnr, varobjschanged, varbndschanged, consschanged)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_updateSolver); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_probnr); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_varobjschanged); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_varbndschanged); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_consschanged); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_8 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_py_pricingprob, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":68
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     py_pricing_solver.updateSolver(py_pricingprob, probnr, varobjschanged, varbndschanged, consschanged)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolve (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":64
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverUpdate (SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyPricingSolverUpdate", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_XDECREF(__pyx_v_py_pricingprob);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":70
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolve (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolve(CYTHON_UNUSED SCIP *__pyx_v_scip, SCIP *__pyx_v_pricingprob, GCG_SOLVER *__pyx_v_solver, int __pyx_v_probnr, SCIP_Real __pyx_v_dualsolconv, SCIP_Real *__pyx_v_lowerbound, GCG_PRICINGSTATUS *__pyx_v_status) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  PyObject *__pyx_v_py_pricingprob = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __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;
  unsigned int __pyx_t_6;
  SCIP_Real __pyx_t_7;
  GCG_PRICINGSTATUS __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverSolve", 0);

  /* "src/pygcgopt/pricing_solver.pxi":71
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolve (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":72
 * cdef SCIP_RETCODE PyPricingSolverSolve (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)             # <<<<<<<<<<<<<<
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create(__pyx_v_pricingprob); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricingprob = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":73
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)             # <<<<<<<<<<<<<<
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_solve); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_probnr); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_dualsolconv); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_py_pricingprob, __pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":74
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)             # <<<<<<<<<<<<<<
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_7 == ((SCIP_Real)-1)) && PyErr_Occurred())) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  (__pyx_v_lowerbound[0]) = __pyx_t_7;

  /* "src/pygcgopt/pricing_solver.pxi":75
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(((GCG_PRICINGSTATUS)(__pyx_v_status[0]))); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_n_u_status, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_t_8 = ((GCG_PRICINGSTATUS)__Pyx_PyInt_As_GCG_PRICINGSTATUS(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  (__pyx_v_status[0]) = __pyx_t_8;

  /* "src/pygcgopt/pricing_solver.pxi":76
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolveHeur (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":70
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolve (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyPricingSolverSolve", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_XDECREF(__pyx_v_py_pricingprob);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/pricing_solver.pxi":78
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolveHeur (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolveHeur(CYTHON_UNUSED SCIP *__pyx_v_scip, SCIP *__pyx_v_pricingprob, GCG_SOLVER *__pyx_v_solver, int __pyx_v_probnr, SCIP_Real __pyx_v_dualsolconv, SCIP_Real *__pyx_v_lowerbound, GCG_PRICINGSTATUS *__pyx_v_status) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_py_pricing_solver = NULL;
  PyObject *__pyx_v_py_pricingprob = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __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;
  unsigned int __pyx_t_6;
  SCIP_Real __pyx_t_7;
  GCG_PRICINGSTATUS __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyPricingSolverSolveHeur", 0);

  /* "src/pygcgopt/pricing_solver.pxi":79
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolveHeur (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)             # <<<<<<<<<<<<<<
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solveHeuristic(py_pricingprob, probnr, dualsolconv)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_8pygcgopt_3gcg_get_py_pricing_solver(__pyx_v_solver)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricing_solver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":80
 * cdef SCIP_RETCODE PyPricingSolverSolveHeur (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)             # <<<<<<<<<<<<<<
 *     result_dict = py_pricing_solver.solveHeuristic(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 */
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create(__pyx_v_pricingprob); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_py_pricingprob = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":81
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solveHeuristic(py_pricingprob, probnr, dualsolconv)             # <<<<<<<<<<<<<<
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_pricing_solver), __pyx_n_s_solveHeuristic); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_probnr); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_dualsolconv); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_py_pricingprob, __pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/pricing_solver.pxi":82
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solveHeuristic(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)             # <<<<<<<<<<<<<<
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_7 == ((SCIP_Real)-1)) && PyErr_Occurred())) __PYX_ERR(7, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  (__pyx_v_lowerbound[0]) = __pyx_t_7;

  /* "src/pygcgopt/pricing_solver.pxi":83
 *     result_dict = py_pricing_solver.solveHeuristic(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(((GCG_PRICINGSTATUS)(__pyx_v_status[0]))); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_n_u_status, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_t_8 = ((GCG_PRICINGSTATUS)__Pyx_PyInt_As_GCG_PRICINGSTATUS(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  (__pyx_v_status[0]) = __pyx_t_8;

  /* "src/pygcgopt/pricing_solver.pxi":84
 *     lowerbound[0] = result_dict.get("lowerbound", 0)
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/pricing_solver.pxi":78
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyPricingSolverSolveHeur (SCIP* scip, SCIP* pricingprob, GCG_SOLVER* solver, int probnr, SCIP_Real dualsolconv, SCIP_Real* lowerbound, GCG_PRICINGSTATUS* status) noexcept with gil:             # <<<<<<<<<<<<<<
 *     py_pricing_solver = get_py_pricing_solver(solver)
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyPricingSolverSolveHeur", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_pricing_solver);
  __Pyx_XDECREF(__pyx_v_py_pricingprob);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/score.pxi":7
 *     cdef public str scorename
 * 
 *     def scorefree(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of score'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_1scorefree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Score_scorefree, "Score.scorefree(self)\ncalls destructor and frees memory of score");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Score_1scorefree = {"scorefree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_1scorefree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_scorefree};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_1scorefree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scorefree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("scorefree", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "scorefree", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_scorefree(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_scorefree(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scorefree", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/score.pxi":11
 *         pass
 * 
 *     def scorecalculate(self, partialdec):             # <<<<<<<<<<<<<<
 *         '''calls calculate method of score'''
 *         return {}
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_3scorecalculate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Score_2scorecalculate, "Score.scorecalculate(self, partialdec)\ncalls calculate method of score");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Score_3scorecalculate = {"scorecalculate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_3scorecalculate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_2scorecalculate};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_3scorecalculate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scorecalculate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 11, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scorecalculate") < 0)) __PYX_ERR(8, 11, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scorecalculate", 1, 1, 1, __pyx_nargs); __PYX_ERR(8, 11, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Score.scorecalculate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_2scorecalculate(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_2scorecalculate(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_partialdec) {
  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("scorecalculate", 1);

  /* "src/pygcgopt/score.pxi":13
 *     def scorecalculate(self, partialdec):
 *         '''calls calculate method of score'''
 *         return {}             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyScoreFree(SCIP* scip, GCG_SCORE* score) noexcept with gil:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/score.pxi":11
 *         pass
 * 
 *     def scorecalculate(self, partialdec):             # <<<<<<<<<<<<<<
 *         '''calls calculate method of score'''
 *         return {}
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Score.scorecalculate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/score.pxi":4
 *     """Base class of the Score Plugin"""
 * 
 *     cdef public Model model             # <<<<<<<<<<<<<<
 *     cdef public str scorename
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_5model___get__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_5Score_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_5Score_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_5model_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_5Score_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(8, 4, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Score.model.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_5Score_5model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_5Score_5model_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_5model_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_5Score_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None);

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

/* "src/pygcgopt/score.pxi":5
 * 
 *     cdef public Model model
 *     cdef public str scorename             # <<<<<<<<<<<<<<
 * 
 *     def scorefree(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_9scorename_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_9scorename_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_9scorename___get__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_9scorename___get__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->scorename);
  __pyx_r = __pyx_v_self->scorename;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_2__set__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_value))) __PYX_ERR(8, 5, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->scorename);
  __Pyx_DECREF(__pyx_v_self->scorename);
  __pyx_v_self->scorename = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Score.scorename.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_5Score_9scorename_4__del__(struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->scorename);
  __Pyx_DECREF(__pyx_v_self->scorename);
  __pyx_v_self->scorename = ((PyObject*)Py_None);

  /* 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_8pygcgopt_3gcg_5Score_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Score_4__reduce_cython__, "Score.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Score_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_4__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_4__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_Score *__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;
  PyObject *__pyx_t_3 = NULL;
  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__", 1);

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

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.model, self.scorename)
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

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

    /* "(tree fragment)":7
 *     state = (self.model, self.scorename)
 *     _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.model is not None or self.scorename is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, None), state
 */
  /*else*/ {
    __pyx_t_4 = (((PyObject *)__pyx_v_self->model) != Py_None);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->scorename != ((PyObject*)Py_None));
    __pyx_t_2 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_2;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.scorename is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = self.model is not None or self.scorename is not None
 *     if use_setstate:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_Score); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_104261058);
    __Pyx_GIVEREF(__pyx_int_104261058);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_104261058)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.scorename is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, None), state
 *     else:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Score__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Score); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_104261058);
    __Pyx_GIVEREF(__pyx_int_104261058);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_104261058)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Score.__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_Score, (type(self), 0x636e5c2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Score__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Score_6__setstate_cython__, "Score.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Score_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_6__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Score_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Score.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Score_6__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Score_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_Score *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Score__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_Score__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_Score, (type(self), 0x636e5c2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Score__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("pygcgopt.gcg.Score.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/score.pxi":15
 *         return {}
 * 
 * cdef SCIP_RETCODE PyScoreFree(SCIP* scip, GCG_SCORE* score) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyScoreFree(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SCORE *__pyx_v_score) {
  GCG_SCOREDATA *__pyx_v_scoredata;
  struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_py_score = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyScoreFree", 0);

  /* "src/pygcgopt/score.pxi":17
 * cdef SCIP_RETCODE PyScoreFree(SCIP* scip, GCG_SCORE* score) noexcept with gil:
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)             # <<<<<<<<<<<<<<
 *     py_score = <Score>scoredata
 *     py_score.scorefree()
 */
  __pyx_v_scoredata = GCGscoreGetData(__pyx_v_score);

  /* "src/pygcgopt/score.pxi":18
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 *     py_score = <Score>scoredata             # <<<<<<<<<<<<<<
 *     py_score.scorefree()
 *     Py_DECREF(py_score)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_scoredata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_score = ((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/score.pxi":19
 *     scoredata = GCGscoreGetData(score)
 *     py_score = <Score>scoredata
 *     py_score.scorefree()             # <<<<<<<<<<<<<<
 *     Py_DECREF(py_score)
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_score), __pyx_n_s_scorefree); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 19, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/score.pxi":20
 *     py_score = <Score>scoredata
 *     py_score.scorefree()
 *     Py_DECREF(py_score)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_py_score));

  /* "src/pygcgopt/score.pxi":21
 *     py_score.scorefree()
 *     Py_DECREF(py_score)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyScoreCalculate(SCIP* scip, GCG_SCORE* score, int partialdecid, SCIP_Real* scorevalue) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/score.pxi":15
 *         return {}
 * 
 * cdef SCIP_RETCODE PyScoreFree(SCIP* scip, GCG_SCORE* score) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyScoreFree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_score);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/score.pxi":23
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyScoreCalculate(SCIP* scip, GCG_SCORE* score, int partialdecid, SCIP_Real* scorevalue) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyScoreCalculate(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_SCORE *__pyx_v_score, int __pyx_v_partialdecid, SCIP_Real *__pyx_v_scorevalue) {
  GCG_SCOREDATA *__pyx_v_scoredata;
  struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_py_score = NULL;
  PyObject *__pyx_v_partialdec = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  SCIP_Real __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyScoreCalculate", 0);

  /* "src/pygcgopt/score.pxi":25
 * cdef SCIP_RETCODE PyScoreCalculate(SCIP* scip, GCG_SCORE* score, int partialdecid, SCIP_Real* scorevalue) noexcept with gil:
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)             # <<<<<<<<<<<<<<
 *     py_score = <Score>scoredata
 *     partialdec = py_score.model.getPartDecompFromID(partialdecid)
 */
  __pyx_v_scoredata = GCGscoreGetData(__pyx_v_score);

  /* "src/pygcgopt/score.pxi":26
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 *     py_score = <Score>scoredata             # <<<<<<<<<<<<<<
 *     partialdec = py_score.model.getPartDecompFromID(partialdecid)
 *     result_dict = py_score.scorecalculate(partialdec)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_scoredata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_score = ((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/score.pxi":27
 *     scoredata = GCGscoreGetData(score)
 *     py_score = <Score>scoredata
 *     partialdec = py_score.model.getPartDecompFromID(partialdecid)             # <<<<<<<<<<<<<<
 *     result_dict = py_score.scorecalculate(partialdec)
 *     scorevalue[0] = result_dict.get("scorevalue", scorevalue[0])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_score->model), __pyx_n_s_getPartDecompFromID); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_partialdecid); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(8, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_partialdec = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/score.pxi":28
 *     py_score = <Score>scoredata
 *     partialdec = py_score.model.getPartDecompFromID(partialdecid)
 *     result_dict = py_score.scorecalculate(partialdec)             # <<<<<<<<<<<<<<
 *     scorevalue[0] = result_dict.get("scorevalue", scorevalue[0])
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_score), __pyx_n_s_scorecalculate); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_partialdec};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_result_dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/score.pxi":29
 *     partialdec = py_score.model.getPartDecompFromID(partialdecid)
 *     result_dict = py_score.scorecalculate(partialdec)
 *     scorevalue[0] = result_dict.get("scorevalue", scorevalue[0])             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyFloat_FromDouble((__pyx_v_scorevalue[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_n_u_scorevalue, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __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(8, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_6 == ((SCIP_Real)-1)) && PyErr_Occurred())) __PYX_ERR(8, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  (__pyx_v_scorevalue[0]) = __pyx_t_6;

  /* "src/pygcgopt/score.pxi":30
 *     result_dict = py_score.scorecalculate(partialdec)
 *     scorevalue[0] = result_dict.get("scorevalue", scorevalue[0])
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/score.pxi":23
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyScoreCalculate(SCIP* scip, GCG_SCORE* score, int partialdecid, SCIP_Real* scorevalue) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_SCOREDATA* scoredata
 *     scoredata = GCGscoreGetData(score)
 */

  /* 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_WriteUnraisable("pygcgopt.gcg.PyScoreCalculate", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_score);
  __Pyx_XDECREF(__pyx_v_partialdec);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":5
 * 
 *     @staticmethod
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):             # <<<<<<<<<<<<<<
 *         if consPartition == NULL:
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_8ConsPart_create(gcg::ConsPartition *__pyx_v_consPartition, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_detProbData) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_new_ConsPart = NULL;
  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("create", 1);

  /* "src/pygcgopt/partition.pxi":6
 *     @staticmethod
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):
 *         if consPartition == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 *         new_ConsPart = ConsPart()
 */
  __pyx_t_1 = (__pyx_v_consPartition == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/partition.pxi":7
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):
 *         if consPartition == NULL:
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")             # <<<<<<<<<<<<<<
 *         new_ConsPart = ConsPart()
 *         new_ConsPart.consPartition = consPartition
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(1, 7, __pyx_L1_error)

    /* "src/pygcgopt/partition.pxi":6
 *     @staticmethod
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):
 *         if consPartition == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 *         new_ConsPart = ConsPart()
 */
  }

  /* "src/pygcgopt/partition.pxi":8
 *         if consPartition == NULL:
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 *         new_ConsPart = ConsPart()             # <<<<<<<<<<<<<<
 *         new_ConsPart.consPartition = consPartition
 *         new_ConsPart.detProbData = detProbData
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_new_ConsPart = ((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/partition.pxi":9
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 *         new_ConsPart = ConsPart()
 *         new_ConsPart.consPartition = consPartition             # <<<<<<<<<<<<<<
 *         new_ConsPart.detProbData = detProbData
 *         return new_ConsPart
 */
  __pyx_v_new_ConsPart->consPartition = __pyx_v_consPartition;

  /* "src/pygcgopt/partition.pxi":10
 *         new_ConsPart = ConsPart()
 *         new_ConsPart.consPartition = consPartition
 *         new_ConsPart.detProbData = detProbData             # <<<<<<<<<<<<<<
 *         return new_ConsPart
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_detProbData);
  __Pyx_GIVEREF((PyObject *)__pyx_v_detProbData);
  __Pyx_GOTREF((PyObject *)__pyx_v_new_ConsPart->detProbData);
  __Pyx_DECREF((PyObject *)__pyx_v_new_ConsPart->detProbData);
  __pyx_v_new_ConsPart->detProbData = __pyx_v_detProbData;

  /* "src/pygcgopt/partition.pxi":11
 *         new_ConsPart.consPartition = consPartition
 *         new_ConsPart.detProbData = detProbData
 *         return new_ConsPart             # <<<<<<<<<<<<<<
 * 
 *     def getClassDescription(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_new_ConsPart);
  __pyx_r = ((PyObject *)__pyx_v_new_ConsPart);
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":5
 * 
 *     @staticmethod
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):             # <<<<<<<<<<<<<<
 *         if consPartition == NULL:
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_new_ConsPart);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":13
 *         return new_ConsPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_1getClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_getClassDescription, "ConsPart.getClassDescription(self, classindex)\nreturns the description of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: description of the class\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_1getClassDescription = {"getClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_1getClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_getClassDescription};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_1getClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassDescription (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 13, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassDescription") < 0)) __PYX_ERR(1, 13, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassDescription", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 13, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_getClassDescription(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_getClassDescription(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassDescription", 1);

  /* "src/pygcgopt/partition.pxi":21
 *         :rtype: str
 *         """
 *         return self.consPartition.getClassDescription(classindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getClassName(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 21, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->consPartition->getClassDescription(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 21, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 21, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_2, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":13
 *         return new_ConsPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":23
 *         return self.consPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_3getClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_2getClassName, "ConsPart.getClassName(self, classindex)\nreturns the name of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: name of the class\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_3getClassName = {"getClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_3getClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_2getClassName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_3getClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 23, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassName") < 0)) __PYX_ERR(1, 23, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassName", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 23, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_2getClassName(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_2getClassName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassName", 1);

  /* "src/pygcgopt/partition.pxi":31
 *         :rtype: str
 *         """
 *         return self.consPartition.getClassName(classindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getName(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 31, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->consPartition->getClassName(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 31, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 31, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_2, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":23
 *         return self.consPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":33
 *         return self.consPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_5getName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_4getName, "ConsPart.getName(self)\nreturns the name of the constraint partition\n\n        :return: name of the constraint partition\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_5getName = {"getName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_5getName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_4getName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_5getName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getName", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getName", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_4getName(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_4getName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getName", 1);

  /* "src/pygcgopt/partition.pxi":39
 *         :rtype: str
 *         """
 *         return self.consPartition.getName().decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getNClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->consPartition->getName();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 39, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 39, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_1, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":33
 *         return self.consPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the constraint partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":41
 *         return self.consPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_7getNClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_6getNClasses, "ConsPart.getNClasses(self)\nreturns the number of classes of the constraint partition\n\n        :return: number of classes\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_7getNClasses = {"getNClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_7getNClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_6getNClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_7getNClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_6getNClasses(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_6getNClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  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("getNClasses", 1);

  /* "src/pygcgopt/partition.pxi":47
 *         :rtype: int
 *         """
 *         return self.consPartition.getNClasses()             # <<<<<<<<<<<<<<
 * 
 *     def removeEmptyClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->consPartition->getNClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 47, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":41
 *         return self.consPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the constraint partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getNClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":49
 *         return self.consPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses, "ConsPart.removeEmptyClasses(self)\nremoves all classes which do not have any assigned indices (classindices may change)\n\n        :return: number of removed classes\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses = {"removeEmptyClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("removeEmptyClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("removeEmptyClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "removeEmptyClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  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("removeEmptyClasses", 1);

  /* "src/pygcgopt/partition.pxi":55
 *         :rtype: int
 *         """
 *         return self.consPartition.removeEmptyClasses()             # <<<<<<<<<<<<<<
 * 
 *     def setClassDescription(self, classindex, desc):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->consPartition->removeEmptyClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 55, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":49
 *         return self.consPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.removeEmptyClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":57
 *         return self.consPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_11setClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_10setClassDescription, "ConsPart.setClassDescription(self, classindex, desc)\nsets the description of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param desc: description of the class\n        :type desc: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_11setClassDescription = {"setClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_11setClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_10setClassDescription};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_11setClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_desc = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassDescription (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_desc,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 57, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 57, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassDescription", 1, 2, 2, 1); __PYX_ERR(1, 57, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassDescription") < 0)) __PYX_ERR(1, 57, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_desc = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassDescription", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 57, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_10setClassDescription(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_desc);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_10setClassDescription(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_desc) {
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassDescription", 1);

  /* "src/pygcgopt/partition.pxi":65
 *         :type desc: str
 *         """
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         self.consPartition.setClassDescription(classindex, c_desc)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":66
 *         """
 *         c_desc = str_conversion(desc)
 *         self.consPartition.setClassDescription(classindex, c_desc)             # <<<<<<<<<<<<<<
 * 
 *     def setClassName(self, classindex, name):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L1_error)
  try {
    __pyx_v_self->consPartition->setClassDescription(__pyx_t_5, __pyx_t_6);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 66, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":57
 *         return self.consPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":68
 *         self.consPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_13setClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_12setClassName, "ConsPart.setClassName(self, classindex, name)\nsets the name of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param name: name of the class\n        :type name: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_13setClassName = {"setClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_13setClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_12setClassName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_13setClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 68, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 68, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassName", 1, 2, 2, 1); __PYX_ERR(1, 68, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassName") < 0)) __PYX_ERR(1, 68, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassName", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 68, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_12setClassName(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_12setClassName(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *__pyx_v_c_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassName", 1);

  /* "src/pygcgopt/partition.pxi":76
 *         :type name: str
 *         """
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         self.consPartition.setClassName(classindex, name)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":77
 *         """
 *         c_name = str_conversion(name)
 *         self.consPartition.setClassName(classindex, name)             # <<<<<<<<<<<<<<
 * 
 *     def addClass(self, name, desc, decompInfo):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 77, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 77, __pyx_L1_error)
  try {
    __pyx_v_self->consPartition->setClassName(__pyx_t_5, __pyx_t_6);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 77, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":68
 *         self.consPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":79
 *         self.consPartition.setClassName(classindex, name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_15addClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_14addClass, "ConsPart.addClass(self, name, desc, decompInfo)\nadds a new class to the constraint partition\n\n        :param name: name of the class\n        :type name: str\n        :param desc: description of the class\n        :type desc: str\n        :param decompInfo: decomposition information of the constraint class\n        :type decompInfo: :class:`CONS_DECOMPINFO`\n        :return: index of the added class\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_15addClass = {"addClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_15addClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_14addClass};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_15addClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_decompInfo = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addClass (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_desc,&__pyx_n_s_decompInfo,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 79, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 79, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, 1); __PYX_ERR(1, 79, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decompInfo)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 79, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, 2); __PYX_ERR(1, 79, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addClass") < 0)) __PYX_ERR(1, 79, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_desc = values[1];
    __pyx_v_decompInfo = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 79, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.addClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_14addClass(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_name, __pyx_v_desc, __pyx_v_decompInfo);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_14addClass(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_desc, PyObject *__pyx_v_decompInfo) {
  PyObject *__pyx_v_c_name = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  gcg::CONS_DECOMPINFO __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addClass", 1);

  /* "src/pygcgopt/partition.pxi":91
 *         :rtype: int
 *         """
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":92
 *         """
 *         c_name = str_conversion(name)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":93
 *         c_name = str_conversion(name)
 *         c_desc = str_conversion(desc)
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)             # <<<<<<<<<<<<<<
 * 
 *     def assignConsToClass(self, Constraint cons, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 93, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 93, __pyx_L1_error)
  __pyx_t_7 = ((gcg::CONS_DECOMPINFO)__Pyx_PyInt_As_gcg_3a__3a_CONS_DECOMPINFO(__pyx_v_decompInfo)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 93, __pyx_L1_error)
  try {
    __pyx_t_8 = __pyx_v_self->consPartition->addClass(__pyx_t_5, __pyx_t_6, __pyx_t_7);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 93, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":79
 *         self.consPartition.setClassName(classindex, name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the constraint partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.addClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":95
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignConsToClass(self, Constraint cons, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a constraint to the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_17assignConsToClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_16assignConsToClass, "ConsPart.assignConsToClass(self, Constraint cons, classindex)\nassigns a constraint to the class corresponding to the classindex\n\n        :param cons: constraint that should be assigned to a class\n        :type cons: :class:`Constraint`\n        :param classindex: index of the class\n        :type classindex: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_17assignConsToClass = {"assignConsToClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_17assignConsToClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_16assignConsToClass};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_17assignConsToClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("assignConsToClass (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 95, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 95, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("assignConsToClass", 1, 2, 2, 1); __PYX_ERR(1, 95, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "assignConsToClass") < 0)) __PYX_ERR(1, 95, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
    __pyx_v_classindex = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("assignConsToClass", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.assignConsToClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(1, 95, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_16assignConsToClass(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_cons, __pyx_v_classindex);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_16assignConsToClass(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, PyObject *__pyx_v_classindex) {
  int __pyx_v_cpp_consindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("assignConsToClass", 1);

  /* "src/pygcgopt/partition.pxi":103
 *         :type classindex: int
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)             # <<<<<<<<<<<<<<
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_cons)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_consindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":104
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)             # <<<<<<<<<<<<<<
 * 
 *     def getAllSubsets(self, both, only_master, only_pricing):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 104, __pyx_L1_error)
  try {
    __pyx_v_self->consPartition->assignConsToClass(__pyx_v_cpp_consindex, __pyx_t_5);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 104, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":95
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignConsToClass(self, Constraint cons, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a constraint to the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.assignConsToClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":106
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)
 * 
 *     def getAllSubsets(self, both, only_master, only_pricing):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_19getAllSubsets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_18getAllSubsets, "ConsPart.getAllSubsets(self, both, only_master, only_pricing)\nreturns a list containing all possible subsets of the chosen classindices\n\n        :param both: True iff PY_BOTH classes should be considered\n        :type both: bool\n        :param only_master: True iff PY_ONLY_MASTER classes should be considered\n        :type only_master: bool\n        :param only_pricing: True iff PY_ONLY_PRICING classes should be considered\n        :type only_pricing: bool\n        :return: list of lists containing all possible subsets of the chosen classindices\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_19getAllSubsets = {"getAllSubsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_19getAllSubsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_18getAllSubsets};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_19getAllSubsets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_both = 0;
  PyObject *__pyx_v_only_master = 0;
  PyObject *__pyx_v_only_pricing = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAllSubsets (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_both,&__pyx_n_s_only_master,&__pyx_n_s_only_pricing,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_both)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_only_master)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 106, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 3, 3, 1); __PYX_ERR(1, 106, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_only_pricing)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 106, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 3, 3, 2); __PYX_ERR(1, 106, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getAllSubsets") < 0)) __PYX_ERR(1, 106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_both = values[0];
    __pyx_v_only_master = values[1];
    __pyx_v_only_pricing = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getAllSubsets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_18getAllSubsets(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_both, __pyx_v_only_master, __pyx_v_only_pricing);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_18getAllSubsets(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_both, PyObject *__pyx_v_only_master, PyObject *__pyx_v_only_pricing) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  std::vector<std::vector<int> >  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getAllSubsets", 1);

  /* "src/pygcgopt/partition.pxi":118
 *         :rtype: list
 *         """
 *         return self.consPartition.getAllSubsets(both, only_master, only_pricing)             # <<<<<<<<<<<<<<
 * 
 *     def getClassDecompInfo(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_both); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 118, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_only_master); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 118, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_only_pricing); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 118, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_v_self->consPartition->getAllSubsets(__pyx_t_1, __pyx_t_2, __pyx_t_3);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 118, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":106
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)
 * 
 *     def getAllSubsets(self, both, only_master, only_pricing):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getAllSubsets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":120
 *         return self.consPartition.getAllSubsets(both, only_master, only_pricing)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo, "ConsPart.getClassDecompInfo(self, classindex)\nreturns the decomposition information of a class\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: decomposition information of the constraint class\n        :rtype: :class:`CONS_DECOMPINFO`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo = {"getClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassDecompInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 120, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassDecompInfo") < 0)) __PYX_ERR(1, 120, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassDecompInfo", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::CONS_DECOMPINFO __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassDecompInfo", 1);

  /* "src/pygcgopt/partition.pxi":128
 *         :rtype: :class:`CONS_DECOMPINFO`
 *         """
 *         return self.consPartition.getClassDecompInfo(classindex)             # <<<<<<<<<<<<<<
 * 
 *     def getClassNameOfCons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 128, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->consPartition->getClassDecompInfo(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 128, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":120
 *         return self.consPartition.getAllSubsets(both, only_master, only_pricing)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":130
 *         return self.consPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a constraint is assigned to
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons, "ConsPart.getClassNameOfCons(self, Constraint cons)\nreturns the name of the class a constraint is assigned to\n\n        :param cons: constraint\n        :type cons: :class:`Constraint`\n        :return: name of the class of the constraint\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons = {"getClassNameOfCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassNameOfCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 130, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassNameOfCons") < 0)) __PYX_ERR(1, 130, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassNameOfCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassNameOfCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(1, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  int __pyx_v_cpp_consindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassNameOfCons", 1);

  /* "src/pygcgopt/partition.pxi":138
 *         :rtype: str
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)             # <<<<<<<<<<<<<<
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_cons)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_consindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":139
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getClassOfCons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_self->consPartition->getClassNameOfCons(__pyx_v_cpp_consindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 139, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_t_6); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(1, 139, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_6, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":130
 *         return self.consPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a constraint is assigned to
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassNameOfCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":141
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')
 * 
 *     def getClassOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a constraint is assigned to
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_25getClassOfCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_24getClassOfCons, "ConsPart.getClassOfCons(self, Constraint cons)\nreturns the index of the class a constraint is assigned to\n\n        :param cons: constraint\n        :type cons: :class:`Constraint`\n        :return: classindex of the constraint\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_25getClassOfCons = {"getClassOfCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_25getClassOfCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_24getClassOfCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_25getClassOfCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassOfCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 141, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassOfCons") < 0)) __PYX_ERR(1, 141, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassOfCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 141, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassOfCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(1, 141, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_24getClassOfCons(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_24getClassOfCons(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  int __pyx_v_cpp_consindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassOfCons", 1);

  /* "src/pygcgopt/partition.pxi":149
 *         :rtype: int
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)             # <<<<<<<<<<<<<<
 *         return self.consPartition.getClassOfCons(cpp_consindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_cons)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_consindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":150
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)
 *         return self.consPartition.getClassOfCons(cpp_consindex)             # <<<<<<<<<<<<<<
 * 
 *     def getNConss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_5 = __pyx_v_self->consPartition->getClassOfCons(__pyx_v_cpp_consindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 150, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":141
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')
 * 
 *     def getClassOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a constraint is assigned to
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getClassOfCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":152
 *         return self.consPartition.getClassOfCons(cpp_consindex)
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints of the constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_27getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_26getNConss, "ConsPart.getNConss(self)\nreturns the number of constraints of the constraint partition\n\n        :return: number of constraints\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_27getNConss = {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_27getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_26getNConss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_27getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_26getNConss(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_26getNConss(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  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("getNConss", 1);

  /* "src/pygcgopt/partition.pxi":158
 *         :rtype: int
 *         """
 *         return self.consPartition.getNConss()             # <<<<<<<<<<<<<<
 * 
 *     def getNConssOfClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->consPartition->getNConss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 158, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":152
 *         return self.consPartition.getClassOfCons(cpp_consindex)
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints of the constraint partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getNConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":160
 *         return self.consPartition.getNConss()
 * 
 *     def getNConssOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of constraints that are assigned to the classes
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses, "ConsPart.getNConssOfClasses(self)\nreturns list with the numbers of constraints that are assigned to the classes\n\n        :return: list with the numbers of constraints that are assigned to the classes\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses = {"getNConssOfClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConssOfClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConssOfClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConssOfClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getNConssOfClasses", 1);

  /* "src/pygcgopt/partition.pxi":166
 *         :rtype: list
 *         """
 *         return self.consPartition.getNConssOfClasses()             # <<<<<<<<<<<<<<
 * 
 *     def isConsClassified(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->consPartition->getNConssOfClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 166, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":160
 *         return self.consPartition.getNConss()
 * 
 *     def getNConssOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of constraints that are assigned to the classes
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.getNConssOfClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":168
 *         return self.consPartition.getNConssOfClasses()
 * 
 *     def isConsClassified(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is already assigned to a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_31isConsClassified(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_30isConsClassified, "ConsPart.isConsClassified(self, Constraint cons)\nreturns whether a constraint is already assigned to a class\n\n        :param cons: constraint that should be checked if it is already assigned to a class\n        :type cons: :class:`Constraint`\n        :return: True iff variable is already assigned to a class\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_31isConsClassified = {"isConsClassified", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_31isConsClassified, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_30isConsClassified};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_31isConsClassified(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsClassified (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 168, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsClassified") < 0)) __PYX_ERR(1, 168, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsClassified", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.isConsClassified", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(1, 168, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_30isConsClassified(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_30isConsClassified(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  int __pyx_v_cpp_consindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  bool __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsClassified", 1);

  /* "src/pygcgopt/partition.pxi":176
 *         :rtype: bool
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)             # <<<<<<<<<<<<<<
 *         return self.consPartition.isConsClassified(cpp_consindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForCons); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_cons)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_consindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":177
 *         """
 *         cdef int cpp_consindex = self.detProbData.getIndexForCons(cons)
 *         return self.consPartition.isConsClassified(cpp_consindex)             # <<<<<<<<<<<<<<
 * 
 *     def reduceClasses(self, maxNumberOfClasses):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_self->consPartition->isConsClassified(__pyx_v_cpp_consindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 177, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":168
 *         return self.consPartition.getNConssOfClasses()
 * 
 *     def isConsClassified(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is already assigned to a class
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.isConsClassified", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":179
 *         return self.consPartition.isConsClassified(cpp_consindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns constraint partition with reduced number of classes
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_33reduceClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_32reduceClasses, "ConsPart.reduceClasses(self, maxNumberOfClasses)\nreturns constraint partition with reduced number of classes\n\n        :param maxNumberOfClasses: maximal number of classes that are allowed\n        :type maxNumberOfClasses: int\n        :return:\n        :rtype: :class:`ConsPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_33reduceClasses = {"reduceClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_33reduceClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_32reduceClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_33reduceClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_maxNumberOfClasses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reduceClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxNumberOfClasses,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxNumberOfClasses)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 179, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reduceClasses") < 0)) __PYX_ERR(1, 179, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_maxNumberOfClasses = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reduceClasses", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 179, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.reduceClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_32reduceClasses(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_maxNumberOfClasses);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_32reduceClasses(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_maxNumberOfClasses) {
  gcg::ConsPartition *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::ConsPartition *__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("reduceClasses", 1);

  /* "src/pygcgopt/partition.pxi":187
 *         :rtype: :class:`ConsPart`
 *         """
 *         cdef ConsPartition* result = self.consPartition.reduceClasses(maxNumberOfClasses)             # <<<<<<<<<<<<<<
 *         return ConsPart.create(result, self.detProbData)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_maxNumberOfClasses); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 187, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->consPartition->reduceClasses(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 187, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_2;

  /* "src/pygcgopt/partition.pxi":188
 *         """
 *         cdef ConsPartition* result = self.consPartition.reduceClasses(maxNumberOfClasses)
 *         return ConsPart.create(result, self.detProbData)             # <<<<<<<<<<<<<<
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self->detProbData);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_8pygcgopt_3gcg_8ConsPart_create(__pyx_v_result, ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 188, __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;

  /* "src/pygcgopt/partition.pxi":179
 *         return self.consPartition.isConsClassified(cpp_consindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns constraint partition with reduced number of classes
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.reduceClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":190
 *         return ConsPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo, "ConsPart.setClassDecompInfo(self, classindex, decompInfo)\nsets the decomposition information of a class\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param decompInfo: decomposition information of the constraint class\n        :type decompInfo: :class:`CONS_DECOMPINFO`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo = {"setClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_decompInfo = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassDecompInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_decompInfo,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 190, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decompInfo)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 190, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassDecompInfo", 1, 2, 2, 1); __PYX_ERR(1, 190, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassDecompInfo") < 0)) __PYX_ERR(1, 190, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_decompInfo = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassDecompInfo", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 190, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_decompInfo);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_decompInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::CONS_DECOMPINFO __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassDecompInfo", 1);

  /* "src/pygcgopt/partition.pxi":198
 *         :type decompInfo: :class:`CONS_DECOMPINFO`
 *         """
 *         self.consPartition.setClassDecompInfo(classindex, decompInfo)             # <<<<<<<<<<<<<<
 * 
 * cdef class VarPart:
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 198, __pyx_L1_error)
  __pyx_t_2 = ((gcg::CONS_DECOMPINFO)__Pyx_PyInt_As_gcg_3a__3a_CONS_DECOMPINFO(__pyx_v_decompInfo)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 198, __pyx_L1_error)
  try {
    __pyx_v_self->consPartition->setClassDecompInfo(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 198, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":190
 *         return ConsPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.setClassDecompInfo", __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):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__, "ConsPart.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_consPartition_cannot_be_con, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__, "ConsPart.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_consPartition_cannot_be_con, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.ConsPart.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":204
 * 
 *     @staticmethod
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):             # <<<<<<<<<<<<<<
 *         if varPartition == NULL:
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_7VarPart_create(gcg::VarPartition *__pyx_v_varPartition, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_detProbData) {
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_new_VarPart = NULL;
  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("create", 1);

  /* "src/pygcgopt/partition.pxi":205
 *     @staticmethod
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):
 *         if varPartition == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 *         new_VarPart = VarPart()
 */
  __pyx_t_1 = (__pyx_v_varPartition == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/partition.pxi":206
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):
 *         if varPartition == NULL:
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")             # <<<<<<<<<<<<<<
 *         new_VarPart = VarPart()
 *         new_VarPart.varPartition = varPartition
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(1, 206, __pyx_L1_error)

    /* "src/pygcgopt/partition.pxi":205
 *     @staticmethod
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):
 *         if varPartition == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 *         new_VarPart = VarPart()
 */
  }

  /* "src/pygcgopt/partition.pxi":207
 *         if varPartition == NULL:
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 *         new_VarPart = VarPart()             # <<<<<<<<<<<<<<
 *         new_VarPart.varPartition = varPartition
 *         new_VarPart.detProbData = detProbData
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_new_VarPart = ((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/partition.pxi":208
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 *         new_VarPart = VarPart()
 *         new_VarPart.varPartition = varPartition             # <<<<<<<<<<<<<<
 *         new_VarPart.detProbData = detProbData
 *         return new_VarPart
 */
  __pyx_v_new_VarPart->varPartition = __pyx_v_varPartition;

  /* "src/pygcgopt/partition.pxi":209
 *         new_VarPart = VarPart()
 *         new_VarPart.varPartition = varPartition
 *         new_VarPart.detProbData = detProbData             # <<<<<<<<<<<<<<
 *         return new_VarPart
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_detProbData);
  __Pyx_GIVEREF((PyObject *)__pyx_v_detProbData);
  __Pyx_GOTREF((PyObject *)__pyx_v_new_VarPart->detProbData);
  __Pyx_DECREF((PyObject *)__pyx_v_new_VarPart->detProbData);
  __pyx_v_new_VarPart->detProbData = __pyx_v_detProbData;

  /* "src/pygcgopt/partition.pxi":210
 *         new_VarPart.varPartition = varPartition
 *         new_VarPart.detProbData = detProbData
 *         return new_VarPart             # <<<<<<<<<<<<<<
 * 
 *     def getClassDescription(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_new_VarPart);
  __pyx_r = ((PyObject *)__pyx_v_new_VarPart);
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":204
 * 
 *     @staticmethod
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):             # <<<<<<<<<<<<<<
 *         if varPartition == NULL:
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_new_VarPart);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":212
 *         return new_VarPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_1getClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_getClassDescription, "VarPart.getClassDescription(self, classindex)\nreturns the description of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: description of the class\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_1getClassDescription = {"getClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_1getClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_getClassDescription};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_1getClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassDescription (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 212, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassDescription") < 0)) __PYX_ERR(1, 212, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassDescription", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 212, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_getClassDescription(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_getClassDescription(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassDescription", 1);

  /* "src/pygcgopt/partition.pxi":220
 *         :rtype: str
 *         """
 *         return self.varPartition.getClassDescription(classindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getClassName(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 220, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->varPartition->getClassDescription(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 220, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 220, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_2, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":212
 *         return new_VarPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":222
 *         return self.varPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_3getClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_2getClassName, "VarPart.getClassName(self, classindex)\nreturns the name of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: name of the class\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_3getClassName = {"getClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_3getClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_2getClassName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_3getClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 222, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassName") < 0)) __PYX_ERR(1, 222, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassName", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_2getClassName(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_2getClassName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassName", 1);

  /* "src/pygcgopt/partition.pxi":230
 *         :rtype: str
 *         """
 *         return self.varPartition.getClassName(classindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getName(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 230, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->varPartition->getClassName(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 230, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 230, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_t_2, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":222
 *         return self.varPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":232
 *         return self.varPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the variable partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_5getName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_4getName, "VarPart.getName(self)\nreturns the name of the variable partition\n\n        :return: name of the constraint partition\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_5getName = {"getName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_5getName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_4getName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_5getName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getName", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getName", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_4getName(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_4getName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getName", 1);

  /* "src/pygcgopt/partition.pxi":238
 *         :rtype: str
 *         """
 *         return self.varPartition.getName().decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getNClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->varPartition->getName();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 238, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 238, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_1, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":232
 *         return self.varPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the variable partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":240
 *         return self.varPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the variable partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_7getNClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_6getNClasses, "VarPart.getNClasses(self)\nreturns the number of classes of the variable partition\n\n        :return: number of classes\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_7getNClasses = {"getNClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_7getNClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_6getNClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_7getNClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_6getNClasses(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_6getNClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  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("getNClasses", 1);

  /* "src/pygcgopt/partition.pxi":246
 *         :rtype: int
 *         """
 *         return self.varPartition.getNClasses()             # <<<<<<<<<<<<<<
 * 
 *     def removeEmptyClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->varPartition->getNClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 246, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":240
 *         return self.varPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the variable partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getNClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":248
 *         return self.varPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses, "VarPart.removeEmptyClasses(self)\nremoves all classes which do not have any assigned indices (classindices may change)\n\n        :return: number of removed classes\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses = {"removeEmptyClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("removeEmptyClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("removeEmptyClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "removeEmptyClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  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("removeEmptyClasses", 1);

  /* "src/pygcgopt/partition.pxi":254
 *         :rtype: int
 *         """
 *         return self.varPartition.removeEmptyClasses()             # <<<<<<<<<<<<<<
 * 
 *     def setClassDescription(self, classindex, desc):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->varPartition->removeEmptyClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 254, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":248
 *         return self.varPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.removeEmptyClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":256
 *         return self.varPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_11setClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_10setClassDescription, "VarPart.setClassDescription(self, classindex, desc)\nsets the description of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param desc: description of the class\n        :type desc: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_11setClassDescription = {"setClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_11setClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_10setClassDescription};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_11setClassDescription(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_desc = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassDescription (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_desc,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 256, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 256, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassDescription", 1, 2, 2, 1); __PYX_ERR(1, 256, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassDescription") < 0)) __PYX_ERR(1, 256, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_desc = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassDescription", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 256, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_10setClassDescription(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_desc);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_10setClassDescription(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_desc) {
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassDescription", 1);

  /* "src/pygcgopt/partition.pxi":264
 *         :type desc: str
 *         """
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         self.varPartition.setClassDescription(classindex, c_desc)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":265
 *         """
 *         c_desc = str_conversion(desc)
 *         self.varPartition.setClassDescription(classindex, c_desc)             # <<<<<<<<<<<<<<
 * 
 *     def setClassName(self, classindex, name):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 265, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 265, __pyx_L1_error)
  try {
    __pyx_v_self->varPartition->setClassDescription(__pyx_t_5, __pyx_t_6);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 265, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":256
 *         return self.varPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassDescription", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":267
 *         self.varPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_13setClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_12setClassName, "VarPart.setClassName(self, classindex, name)\nsets the name of the class corresponding to the classindex\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param name: name of the class\n        :type name: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_13setClassName = {"setClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_13setClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_12setClassName};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_13setClassName(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassName (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 267, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 267, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassName", 1, 2, 2, 1); __PYX_ERR(1, 267, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassName") < 0)) __PYX_ERR(1, 267, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassName", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 267, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_12setClassName(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_12setClassName(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_c_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassName", 1);

  /* "src/pygcgopt/partition.pxi":275
 *         :type name: str
 *         """
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         self.varPartition.setClassName(classindex, c_name)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":276
 *         """
 *         c_name = str_conversion(name)
 *         self.varPartition.setClassName(classindex, c_name)             # <<<<<<<<<<<<<<
 * 
 *     def addClass(self, name, desc, decompInfo):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 276, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 276, __pyx_L1_error)
  try {
    __pyx_v_self->varPartition->setClassName(__pyx_t_5, __pyx_t_6);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 276, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":267
 *         self.varPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassName", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":278
 *         self.varPartition.setClassName(classindex, c_name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the variable partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_15addClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_14addClass, "VarPart.addClass(self, name, desc, decompInfo)\nadds a new class to the variable partition\n\n        :param name: name of the class\n        :type name: str\n        :param desc: description of the class\n        :type desc: str\n        :param decompInfo: decomposition information of the variable class\n        :type decompInfo: :class:`VAR_DECOMPINFO`\n        :return: index of the added class\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_15addClass = {"addClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_15addClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_14addClass};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_15addClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_decompInfo = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addClass (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_desc,&__pyx_n_s_decompInfo,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 278, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 278, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, 1); __PYX_ERR(1, 278, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decompInfo)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 278, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, 2); __PYX_ERR(1, 278, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addClass") < 0)) __PYX_ERR(1, 278, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_desc = values[1];
    __pyx_v_decompInfo = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addClass", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 278, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.addClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_14addClass(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_name, __pyx_v_desc, __pyx_v_decompInfo);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_14addClass(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_desc, PyObject *__pyx_v_decompInfo) {
  PyObject *__pyx_v_c_name = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  gcg::VAR_DECOMPINFO __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addClass", 1);

  /* "src/pygcgopt/partition.pxi":290
 *         :rtype: int
 *         """
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":291
 *         """
 *         c_name = str_conversion(name)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/partition.pxi":292
 *         c_name = str_conversion(name)
 *         c_desc = str_conversion(desc)
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)             # <<<<<<<<<<<<<<
 * 
 *     def assignVarToClass(self, Variable var, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 292, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 292, __pyx_L1_error)
  __pyx_t_7 = ((gcg::VAR_DECOMPINFO)__Pyx_PyInt_As_gcg_3a__3a_VAR_DECOMPINFO(__pyx_v_decompInfo)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 292, __pyx_L1_error)
  try {
    __pyx_t_8 = __pyx_v_self->varPartition->addClass(__pyx_t_5, __pyx_t_6, __pyx_t_7);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 292, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":278
 *         self.varPartition.setClassName(classindex, c_name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the variable partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.addClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":294
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignVarToClass(self, Variable var, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a variable to the class corresponding to the classindex
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_17assignVarToClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_16assignVarToClass, "VarPart.assignVarToClass(self, Variable var, classindex)\nassigns a variable to the class corresponding to the classindex\n\n        :param var: variable that should be assigned to a class\n        :type var: :class:`Variable`\n        :param classindex: index of the class\n        :type classindex: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_17assignVarToClass = {"assignVarToClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_17assignVarToClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_16assignVarToClass};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_17assignVarToClass(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("assignVarToClass (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 294, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 294, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("assignVarToClass", 1, 2, 2, 1); __PYX_ERR(1, 294, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "assignVarToClass") < 0)) __PYX_ERR(1, 294, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_classindex = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("assignVarToClass", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 294, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.assignVarToClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(1, 294, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_16assignVarToClass(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_var, __pyx_v_classindex);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_16assignVarToClass(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, PyObject *__pyx_v_classindex) {
  int __pyx_v_cpp_varindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("assignVarToClass", 1);

  /* "src/pygcgopt/partition.pxi":302
 *         :type classindex: int
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)             # <<<<<<<<<<<<<<
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForVar); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_var)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 302, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_varindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":303
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)             # <<<<<<<<<<<<<<
 * 
 *     def getAllSubsets(self, all, linking, master, block):
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 303, __pyx_L1_error)
  try {
    __pyx_v_self->varPartition->assignVarToClass(__pyx_v_cpp_varindex, __pyx_t_5);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 303, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":294
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignVarToClass(self, Variable var, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a variable to the class corresponding to the classindex
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.assignVarToClass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":305
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)
 * 
 *     def getAllSubsets(self, all, linking, master, block):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_19getAllSubsets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_18getAllSubsets, "VarPart.getAllSubsets(self, all, linking, master, block)\nreturns a list containing all possible subsets of the chosen classindices\n\n        :param all: True iff PY_ALL classes should be considered\n        :type all: bool\n        :param linking: True iff PY_LINKING classes should be considered\n        :type linking: bool\n        :param master: True iff PY_MASTER classes should be considered\n        :type master: bool\n        :param block: True iff PY_BLOCK classes should be considered\n        :type block: bool\n        :return: list of lists containing all possible subsets of the chosen classindices\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_19getAllSubsets = {"getAllSubsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_19getAllSubsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_18getAllSubsets};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_19getAllSubsets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_all = 0;
  PyObject *__pyx_v_linking = 0;
  PyObject *__pyx_v_master = 0;
  PyObject *__pyx_v_block = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAllSubsets (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_all,&__pyx_n_s_linking,&__pyx_n_s_master,&__pyx_n_s_block,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_all)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 305, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_linking)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 305, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 4, 4, 1); __PYX_ERR(1, 305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_master)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 305, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 4, 4, 2); __PYX_ERR(1, 305, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 305, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 4, 4, 3); __PYX_ERR(1, 305, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getAllSubsets") < 0)) __PYX_ERR(1, 305, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_all = values[0];
    __pyx_v_linking = values[1];
    __pyx_v_master = values[2];
    __pyx_v_block = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAllSubsets", 1, 4, 4, __pyx_nargs); __PYX_ERR(1, 305, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getAllSubsets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_18getAllSubsets(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_all, __pyx_v_linking, __pyx_v_master, __pyx_v_block);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_18getAllSubsets(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_all, PyObject *__pyx_v_linking, PyObject *__pyx_v_master, PyObject *__pyx_v_block) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::vector<int> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getAllSubsets", 1);

  /* "src/pygcgopt/partition.pxi":319
 *         :rtype: list
 *         """
 *         return self.varPartition.getAllSubsets(all, linking, master, block)             # <<<<<<<<<<<<<<
 * 
 *     def getClassDecompInfo(self, classindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_all); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 319, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_linking); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 319, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_master); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 319, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_block); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 319, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_v_self->varPartition->getAllSubsets(__pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 319, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":305
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)
 * 
 *     def getAllSubsets(self, all, linking, master, block):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getAllSubsets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":321
 *         return self.varPartition.getAllSubsets(all, linking, master, block)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo, "VarPart.getClassDecompInfo(self, classindex)\nreturns the decomposition information of a class\n\n        :param classindex: index of the class\n        :type classindex: int\n        :return: decomposition information of the variable class\n        :rtype: :class:`VAR_DECOMPINFO`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo = {"getClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassDecompInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 321, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassDecompInfo") < 0)) __PYX_ERR(1, 321, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassDecompInfo", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 321, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::VAR_DECOMPINFO __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassDecompInfo", 1);

  /* "src/pygcgopt/partition.pxi":329
 *         :rtype: :class:`VAR_DECOMPINFO`
 *         """
 *         return self.varPartition.getClassDecompInfo(classindex)             # <<<<<<<<<<<<<<
 * 
 *     def getClassNameOfVar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 329, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->varPartition->getClassDecompInfo(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 329, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":321
 *         return self.varPartition.getAllSubsets(all, linking, master, block)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":331
 *         return self.varPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a variable is assigned to
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar, "VarPart.getClassNameOfVar(self, Variable var)\nreturns the name of the class a variable is assigned to\n\n        :param var: variable\n        :type var: :class:`Variable`\n        :return: name of the class of the variable\n        :rtype: str\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar = {"getClassNameOfVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassNameOfVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 331, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassNameOfVar") < 0)) __PYX_ERR(1, 331, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassNameOfVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 331, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassNameOfVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(1, 331, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  int __pyx_v_cpp_varindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassNameOfVar", 1);

  /* "src/pygcgopt/partition.pxi":339
 *         :rtype: str
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)             # <<<<<<<<<<<<<<
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForVar); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_var)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_varindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":340
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     def getClassOfVar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_self->varPartition->getClassNameOfVar(__pyx_v_cpp_varindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_t_6); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(1, 340, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_6, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":331
 *         return self.varPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a variable is assigned to
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassNameOfVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":342
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')
 * 
 *     def getClassOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a variable is assigned to
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_25getClassOfVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_24getClassOfVar, "VarPart.getClassOfVar(self, Variable var)\nreturns the index of the class a variable is assigned to\n\n        :param var: variable\n        :type var: :class:`Variable`\n        :return: classindex of the variable\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_25getClassOfVar = {"getClassOfVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_25getClassOfVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_24getClassOfVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_25getClassOfVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getClassOfVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 342, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getClassOfVar") < 0)) __PYX_ERR(1, 342, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getClassOfVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 342, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassOfVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(1, 342, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_24getClassOfVar(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_24getClassOfVar(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  int __pyx_v_cpp_varindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getClassOfVar", 1);

  /* "src/pygcgopt/partition.pxi":350
 *         :rtype: int
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)             # <<<<<<<<<<<<<<
 *         return self.varPartition.getClassOfVar(cpp_varindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForVar); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_var)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_varindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":351
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)
 *         return self.varPartition.getClassOfVar(cpp_varindex)             # <<<<<<<<<<<<<<
 * 
 *     def getNVars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_5 = __pyx_v_self->varPartition->getClassOfVar(__pyx_v_cpp_varindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 351, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":342
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')
 * 
 *     def getClassOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a variable is assigned to
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getClassOfVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":353
 *         return self.varPartition.getClassOfVar(cpp_varindex)
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables of the variable partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_27getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_26getNVars, "VarPart.getNVars(self)\nreturns the number of variables of the variable partition\n\n        :return: number of variables\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_27getNVars = {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_27getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_26getNVars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_27getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_26getNVars(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_26getNVars(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  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("getNVars", 1);

  /* "src/pygcgopt/partition.pxi":359
 *         :rtype: int
 *         """
 *         return self.varPartition.getNVars()             # <<<<<<<<<<<<<<
 * 
 *     def getNVarsOfClasses(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->varPartition->getNVars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 359, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":353
 *         return self.varPartition.getClassOfVar(cpp_varindex)
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables of the variable partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getNVars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":361
 *         return self.varPartition.getNVars()
 * 
 *     def getNVarsOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of variables that are assigned to the classes
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses, "VarPart.getNVarsOfClasses(self)\nreturns list with the numbers of variables that are assigned to the classes\n\n        :return: list with the numbers of variables that are assigned to the classes\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses = {"getNVarsOfClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarsOfClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVarsOfClasses", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVarsOfClasses", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getNVarsOfClasses", 1);

  /* "src/pygcgopt/partition.pxi":367
 *         :rtype: list
 *         """
 *         return self.varPartition.getNVarsOfClasses()             # <<<<<<<<<<<<<<
 * 
 *     def isVarClassified(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->varPartition->getNVarsOfClasses();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 367, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":361
 *         return self.varPartition.getNVars()
 * 
 *     def getNVarsOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of variables that are assigned to the classes
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.getNVarsOfClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":369
 *         return self.varPartition.getNVarsOfClasses()
 * 
 *     def isVarClassified(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns whether a variable is already assigned to a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_31isVarClassified(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_30isVarClassified, "VarPart.isVarClassified(self, Variable var)\nreturns whether a variable is already assigned to a class\n\n        :param var: variable that should be checked if it is already assigned to a class\n        :type var: :class:`Variable`\n        :return: True iff variable is already assigned to a class\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_31isVarClassified = {"isVarClassified", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_31isVarClassified, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_30isVarClassified};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_31isVarClassified(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarClassified (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 369, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarClassified") < 0)) __PYX_ERR(1, 369, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarClassified", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.isVarClassified", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(1, 369, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_30isVarClassified(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_30isVarClassified(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  int __pyx_v_cpp_varindex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  bool __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarClassified", 1);

  /* "src/pygcgopt/partition.pxi":377
 *         :rtype: bool
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)             # <<<<<<<<<<<<<<
 *         return self.varPartition.isVarClassified(cpp_varindex)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->detProbData), __pyx_n_s_getIndexForVar); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_var)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 377, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cpp_varindex = __pyx_t_5;

  /* "src/pygcgopt/partition.pxi":378
 *         """
 *         cdef int cpp_varindex = self.detProbData.getIndexForVar(var)
 *         return self.varPartition.isVarClassified(cpp_varindex)             # <<<<<<<<<<<<<<
 * 
 *     def reduceClasses(self, maxNumberOfClasses):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_self->varPartition->isVarClassified(__pyx_v_cpp_varindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 378, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/partition.pxi":369
 *         return self.varPartition.getNVarsOfClasses()
 * 
 *     def isVarClassified(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns whether a variable is already assigned to a class
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.isVarClassified", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":380
 *         return self.varPartition.isVarClassified(cpp_varindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns variable partition with reduced number of classes
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_33reduceClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_32reduceClasses, "VarPart.reduceClasses(self, maxNumberOfClasses)\nreturns variable partition with reduced number of classes\n\n        :param maxNumberOfClasses: maximal number of classes that are allowed\n        :type maxNumberOfClasses: int\n        :return:\n        :rtype: :class:`VarPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_33reduceClasses = {"reduceClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_33reduceClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_32reduceClasses};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_33reduceClasses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_maxNumberOfClasses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reduceClasses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maxNumberOfClasses,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxNumberOfClasses)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 380, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reduceClasses") < 0)) __PYX_ERR(1, 380, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_maxNumberOfClasses = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reduceClasses", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 380, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.reduceClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_32reduceClasses(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_maxNumberOfClasses);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_32reduceClasses(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_maxNumberOfClasses) {
  gcg::VarPartition *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::VarPartition *__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("reduceClasses", 1);

  /* "src/pygcgopt/partition.pxi":388
 *         :rtype: :class:`VarPart`
 *         """
 *         cdef VarPartition* result = self.varPartition.reduceClasses(maxNumberOfClasses)             # <<<<<<<<<<<<<<
 *         return VarPart.create(result, self.detProbData)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_maxNumberOfClasses); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 388, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->varPartition->reduceClasses(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 388, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_2;

  /* "src/pygcgopt/partition.pxi":389
 *         """
 *         cdef VarPartition* result = self.varPartition.reduceClasses(maxNumberOfClasses)
 *         return VarPart.create(result, self.detProbData)             # <<<<<<<<<<<<<<
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self->detProbData);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_8pygcgopt_3gcg_7VarPart_create(__pyx_v_result, ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 389, __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;

  /* "src/pygcgopt/partition.pxi":380
 *         return self.varPartition.isVarClassified(cpp_varindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns variable partition with reduced number of classes
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.reduceClasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/partition.pxi":391
 *         return VarPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo, "VarPart.setClassDecompInfo(self, classindex, decompInfo)\nsets the decomposition information of a class\n\n        :param classindex: index of the class\n        :type classindex: int\n        :param decompInfo: decomposition information of the variable class\n        :type decompInfo: :class:`VAR_DECOMPINFO`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo = {"setClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_classindex = 0;
  PyObject *__pyx_v_decompInfo = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setClassDecompInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classindex,&__pyx_n_s_decompInfo,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 391, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decompInfo)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 391, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setClassDecompInfo", 1, 2, 2, 1); __PYX_ERR(1, 391, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setClassDecompInfo") < 0)) __PYX_ERR(1, 391, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_classindex = values[0];
    __pyx_v_decompInfo = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setClassDecompInfo", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 391, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassDecompInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v_classindex, __pyx_v_decompInfo);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo(struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, PyObject *__pyx_v_classindex, PyObject *__pyx_v_decompInfo) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::VAR_DECOMPINFO __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setClassDecompInfo", 1);

  /* "src/pygcgopt/partition.pxi":399
 *         :type decompInfo: :class:`VAR_DECOMPINFO`
 *         """
 *         self.varPartition.setClassDecompInfo(classindex, decompInfo)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_classindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 399, __pyx_L1_error)
  __pyx_t_2 = ((gcg::VAR_DECOMPINFO)__Pyx_PyInt_As_gcg_3a__3a_VAR_DECOMPINFO(__pyx_v_decompInfo)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 399, __pyx_L1_error)
  try {
    __pyx_v_self->varPartition->setClassDecompInfo(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(1, 399, __pyx_L1_error)
  }

  /* "src/pygcgopt/partition.pxi":391
 *         return VarPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.setClassDecompInfo", __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):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_36__reduce_cython__, "VarPart.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_37__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_36__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_36__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_varPartition_cannot_be_conv, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_7VarPart_38__setstate_cython__, "VarPart.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7VarPart_39__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_38__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7VarPart_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_7VarPart_38__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_7VarPart_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_varPartition_cannot_be_conv, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.VarPart.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":16
 *     cdef list py_block_id_map
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.thisptr = NULL
 *         self.delete_thisptr = True
 */

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition___cinit__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition___cinit__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_r;

  /* "src/pygcgopt/decomposition.pxi":17
 * 
 *     def __cinit__(self):
 *         self.thisptr = NULL             # <<<<<<<<<<<<<<
 *         self.delete_thisptr = True
 * 
 */
  __pyx_v_self->thisptr = NULL;

  /* "src/pygcgopt/decomposition.pxi":18
 *     def __cinit__(self):
 *         self.thisptr = NULL
 *         self.delete_thisptr = True             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_v_self->delete_thisptr = 1;

  /* "src/pygcgopt/decomposition.pxi":16
 *     cdef list py_block_id_map
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.thisptr = NULL
 *         self.delete_thisptr = True
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":20
 *         self.delete_thisptr = True
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.delete_thisptr and self.thisptr != NULL:
 *             del self.thisptr
 */

/* Python wrapper */
static void __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_2__dealloc__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static void __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_2__dealloc__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":21
 * 
 *     def __dealloc__(self):
 *         if self.delete_thisptr and self.thisptr != NULL:             # <<<<<<<<<<<<<<
 *             del self.thisptr
 * 
 */
  __pyx_t_2 = (__pyx_v_self->delete_thisptr != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->thisptr != NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/pygcgopt/decomposition.pxi":22
 *     def __dealloc__(self):
 *         if self.delete_thisptr and self.thisptr != NULL:
 *             del self.thisptr             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
    delete __pyx_v_self->thisptr;

    /* "src/pygcgopt/decomposition.pxi":21
 * 
 *     def __dealloc__(self):
 *         if self.delete_thisptr and self.thisptr != NULL:             # <<<<<<<<<<<<<<
 *             del self.thisptr
 * 
 */
  }

  /* "src/pygcgopt/decomposition.pxi":20
 *         self.delete_thisptr = True
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.delete_thisptr and self.thisptr != NULL:
 *             del self.thisptr
 */

  /* function exit code */
}

/* "src/pygcgopt/decomposition.pxi":25
 * 
 *     @staticmethod
 *     cdef create(PARTIALDECOMP* thisptr):             # <<<<<<<<<<<<<<
 *         if thisptr == NULL:
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(gcg::PARTIALDECOMP *__pyx_v_thisptr) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_new_PartialDecomposition = NULL;
  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("create", 1);

  /* "src/pygcgopt/decomposition.pxi":26
 *     @staticmethod
 *     cdef create(PARTIALDECOMP* thisptr):
 *         if thisptr == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 *         new_PartialDecomposition = PartialDecomposition()
 */
  __pyx_t_1 = (__pyx_v_thisptr == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/decomposition.pxi":27
 *     cdef create(PARTIALDECOMP* thisptr):
 *         if thisptr == NULL:
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition = PartialDecomposition()
 *         new_PartialDecomposition.thisptr = thisptr
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(2, 27, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":26
 *     @staticmethod
 *     cdef create(PARTIALDECOMP* thisptr):
 *         if thisptr == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 *         new_PartialDecomposition = PartialDecomposition()
 */
  }

  /* "src/pygcgopt/decomposition.pxi":28
 *         if thisptr == NULL:
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 *         new_PartialDecomposition = PartialDecomposition()             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition.thisptr = thisptr
 *         new_PartialDecomposition._visualizations = {}
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_new_PartialDecomposition = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/decomposition.pxi":29
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 *         new_PartialDecomposition = PartialDecomposition()
 *         new_PartialDecomposition.thisptr = thisptr             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition._visualizations = {}
 *         new_PartialDecomposition.py_block_id_map = []
 */
  __pyx_v_new_PartialDecomposition->thisptr = __pyx_v_thisptr;

  /* "src/pygcgopt/decomposition.pxi":30
 *         new_PartialDecomposition = PartialDecomposition()
 *         new_PartialDecomposition.thisptr = thisptr
 *         new_PartialDecomposition._visualizations = {}             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition.py_block_id_map = []
 *         new_PartialDecomposition.delete_thisptr = False
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_new_PartialDecomposition->_visualizations);
  __Pyx_DECREF(__pyx_v_new_PartialDecomposition->_visualizations);
  __pyx_v_new_PartialDecomposition->_visualizations = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/decomposition.pxi":31
 *         new_PartialDecomposition.thisptr = thisptr
 *         new_PartialDecomposition._visualizations = {}
 *         new_PartialDecomposition.py_block_id_map = []             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition.delete_thisptr = False
 *         return new_PartialDecomposition
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_new_PartialDecomposition->py_block_id_map);
  __Pyx_DECREF(__pyx_v_new_PartialDecomposition->py_block_id_map);
  __pyx_v_new_PartialDecomposition->py_block_id_map = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/decomposition.pxi":32
 *         new_PartialDecomposition._visualizations = {}
 *         new_PartialDecomposition.py_block_id_map = []
 *         new_PartialDecomposition.delete_thisptr = False             # <<<<<<<<<<<<<<
 *         return new_PartialDecomposition
 * 
 */
  __pyx_v_new_PartialDecomposition->delete_thisptr = 0;

  /* "src/pygcgopt/decomposition.pxi":33
 *         new_PartialDecomposition.py_block_id_map = []
 *         new_PartialDecomposition.delete_thisptr = False
 *         return new_PartialDecomposition             # <<<<<<<<<<<<<<
 * 
 *     def __copy__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_new_PartialDecomposition);
  __pyx_r = ((PyObject *)__pyx_v_new_PartialDecomposition);
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":25
 * 
 *     @staticmethod
 *     cdef create(PARTIALDECOMP* thisptr):             # <<<<<<<<<<<<<<
 *         if thisptr == NULL:
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_new_PartialDecomposition);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":35
 *         return new_PartialDecomposition
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_5__copy__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_4__copy__, "PartialDecomposition.__copy__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_5__copy__ = {"__copy__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_5__copy__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_4__copy__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_5__copy__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__copy__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__copy__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_4__copy__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_4__copy__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__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("__copy__", 1);

  /* "src/pygcgopt/decomposition.pxi":36
 * 
 *     def __copy__(self):
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(new gcg::PARTIALDECOMP(__pyx_v_self->thisptr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":35
 *         return new_PartialDecomposition
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":38
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return copy(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_6copy, "PartialDecomposition.copy(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_6copy};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_6copy(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_6copy(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 1);

  /* "src/pygcgopt/decomposition.pxi":39
 * 
 *     def copy(self):
 *         return copy(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 39, __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;

  /* "src/pygcgopt/decomposition.pxi":38
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return copy(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":41
 *         return copy(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def isSelected(self):
 *         """gets whether the partialdec is currently selected in explore menue
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":47
 *         :return: True iff the partialdec is currently selected in explore menue.
 *         """
 *         cdef bool result = self.thisptr.isSelected()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isSelected();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 47, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":48
 *         """
 *         cdef bool result = self.thisptr.isSelected()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     @isSelected.setter
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":41
 *         return copy(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def isSelected(self):
 *         """gets whether the partialdec is currently selected in explore menue
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isSelected.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":50
 *         return result
 * 
 *     @isSelected.setter             # <<<<<<<<<<<<<<
 *     def isSelected(self, bool selected):
 *         """set the selection status of this partialdecs
 */

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_selected); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_selected) {
  bool __pyx_v_selected;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  assert(__pyx_arg_selected); {
    __pyx_v_selected = __Pyx_PyObject_IsTrue(__pyx_arg_selected); if (unlikely((__pyx_v_selected == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 51, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isSelected.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), ((bool)__pyx_v_selected));

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

static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_selected) {
  bool __pyx_v_cpp_selected;
  int __pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/pygcgopt/decomposition.pxi":56
 *         :param selected: whether the partialdec is selected
 *         """
 *         cdef bool cpp_selected = selected             # <<<<<<<<<<<<<<
 *         self.thisptr.setSelected(cpp_selected)
 * 
 */
  __pyx_v_cpp_selected = __pyx_v_selected;

  /* "src/pygcgopt/decomposition.pxi":57
 *         """
 *         cdef bool cpp_selected = selected
 *         self.thisptr.setSelected(cpp_selected)             # <<<<<<<<<<<<<<
 * 
 *     def addBlock(self):
 */
  try {
    __pyx_v_self->thisptr->setSelected(__pyx_v_cpp_selected);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 57, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":50
 *         return result
 * 
 *     @isSelected.setter             # <<<<<<<<<<<<<<
 *     def isSelected(self, bool selected):
 *         """set the selection status of this partialdecs
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isSelected.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":59
 *         self.thisptr.setSelected(cpp_selected)
 * 
 *     def addBlock(self):             # <<<<<<<<<<<<<<
 *         """adds a new block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_9addBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_8addBlock, "PartialDecomposition.addBlock(self)\nadds a new block\n\n        :return: the number (id) of the new block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_9addBlock = {"addBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_9addBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_8addBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_9addBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("addBlock", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "addBlock", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_8addBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_8addBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("addBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":64
 *         :return: the number (id) of the new block
 *         """
 *         cdef int result = self.thisptr.addBlock()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->addBlock();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 64, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":65
 *         """
 *         cdef int result = self.thisptr.addBlock()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def assignOpenConssToMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":59
 *         self.thisptr.setSelected(cpp_selected)
 * 
 *     def addBlock(self):             # <<<<<<<<<<<<<<
 *         """adds a new block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":67
 *         return result
 * 
 *     def assignOpenConssToMaster(self):             # <<<<<<<<<<<<<<
 *         """assigns open constraints to master
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster, "PartialDecomposition.assignOpenConssToMaster(self)\nassigns open constraints to master\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster = {"assignOpenConssToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("assignOpenConssToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("assignOpenConssToMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "assignOpenConssToMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("assignOpenConssToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":70
 *         """assigns open constraints to master
 *         """
 *         self.thisptr.assignOpenConssToMaster()             # <<<<<<<<<<<<<<
 * 
 *     def isComplete(self):
 */
  try {
    __pyx_v_self->thisptr->assignOpenConssToMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 70, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":67
 *         return result
 * 
 *     def assignOpenConssToMaster(self):             # <<<<<<<<<<<<<<
 *         """assigns open constraints to master
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.assignOpenConssToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":72
 *         self.thisptr.assignOpenConssToMaster()
 * 
 *     def isComplete(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is complete, i.e. it has no more open constraints and variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13isComplete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_12isComplete, "PartialDecomposition.isComplete(self)\ngets whether this partialdec is complete, i.e. it has no more open constraints and variables\n\n        :return: True iff this partialdec is complete\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_13isComplete = {"isComplete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13isComplete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_12isComplete};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13isComplete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isComplete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("isComplete", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isComplete", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_12isComplete(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_12isComplete(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isComplete", 1);

  /* "src/pygcgopt/decomposition.pxi":77
 *         :return: True iff this partialdec is complete
 *         """
 *         cdef bool result = self.thisptr.isComplete()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isComplete();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 77, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":78
 *         """
 *         cdef bool result = self.thisptr.isComplete()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isTrivial(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":72
 *         self.thisptr.assignOpenConssToMaster()
 * 
 *     def isComplete(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is complete, i.e. it has no more open constraints and variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isComplete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":80
 *         return result
 * 
 *     def isTrivial(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is considered to be trivial
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial, "PartialDecomposition.isTrivial(self)\ngets whether this partialdec is considered to be trivial\n\n        :return: True iff this partialdec is considered to be trivial\n\n        .. note:: PartialDecomposition is considered trivial if all constraints are in one block, all constraints are in border,\n        all variables linking or mastervariables, or all constraints and variables are open\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial = {"isTrivial", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isTrivial (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("isTrivial", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isTrivial", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isTrivial", 1);

  /* "src/pygcgopt/decomposition.pxi":88
 *         all variables linking or mastervariables, or all constraints and variables are open
 *         """
 *         cdef bool result = self.thisptr.isTrivial()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isTrivial();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 88, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":89
 *         """
 *         cdef bool result = self.thisptr.isTrivial()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNBlocks(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":80
 *         return result
 * 
 *     def isTrivial(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is considered to be trivial
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isTrivial", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":91
 *         return result
 * 
 *     def getNBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blocks
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks, "PartialDecomposition.getNBlocks(self)\ngets the number of blocks\n\n        :return: number of blocks\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks = {"getNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":96
 *         :return: number of blocks
 *         """
 *         cdef int result = self.thisptr.getNBlocks()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNBlocks();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 96, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":97
 *         """
 *         cdef int result = self.thisptr.getNBlocks()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNConss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":91
 *         return result
 * 
 *     def getNBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blocks
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":99
 *         return result
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """gets the number of constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_18getNConss, "PartialDecomposition.getNConss(self)\ngets the number of constraints\n\n        :return: number of constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_19getNConss = {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_18getNConss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_18getNConss(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_18getNConss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNConss", 1);

  /* "src/pygcgopt/decomposition.pxi":104
 *         :return: number of constraints
 *         """
 *         cdef int result = self.thisptr.getNConss()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNConss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 104, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":105
 *         """
 *         cdef int result = self.thisptr.getNConss()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNVars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":99
 *         return result
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """gets the number of constraints
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":107
 *         return result
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_21getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_20getNVars, "PartialDecomposition.getNVars(self)\ngets number of variables\n\n        :return: number of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_21getNVars = {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_21getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_20getNVars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_21getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_20getNVars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_20getNVars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNVars", 1);

  /* "src/pygcgopt/decomposition.pxi":112
 *         :return: number of variables
 *         """
 *         cdef int result = self.thisptr.getNVars()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNVars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 112, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":113
 *         """
 *         cdef int result = self.thisptr.getNVars()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getID(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":107
 *         return result
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNVars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":115
 *         return result
 * 
 *     def getID(self):             # <<<<<<<<<<<<<<
 *         """gets the unique id of the partialdecomposition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23getID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_22getID, "PartialDecomposition.getID(self)\ngets the unique id of the partialdecomposition\n\n        :return: unique id of the partialdecomposition\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_23getID = {"getID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23getID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_22getID};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23getID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getID (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getID", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getID", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_22getID(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_22getID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getID", 1);

  /* "src/pygcgopt/decomposition.pxi":120
 *         :return: unique id of the partialdecomposition
 *         """
 *         cdef int result = self.thisptr.getID()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getID();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 120, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":121
 *         """
 *         cdef int result = self.thisptr.getID()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getHashValue(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":115
 *         return result
 * 
 *     def getID(self):             # <<<<<<<<<<<<<<
 *         """gets the unique id of the partialdecomposition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":123
 *         return result
 * 
 *     def getHashValue(self):             # <<<<<<<<<<<<<<
 *         """gets the calculated hash value of the partialdecomposition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue, "PartialDecomposition.getHashValue(self)\ngets the calculated hash value of the partialdecomposition\n\n        :return: calculated hash value of the partialdecomposition\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue = {"getHashValue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getHashValue (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getHashValue", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getHashValue", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  unsigned long __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  unsigned long __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getHashValue", 1);

  /* "src/pygcgopt/decomposition.pxi":128
 *         :return: calculated hash value of the partialdecomposition
 *         """
 *         cdef unsigned long result = self.thisptr.getHashValue()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getHashValue();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 128, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":129
 *         """
 *         cdef unsigned long result = self.thisptr.getHashValue()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getDetprobdata(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_unsigned_long(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":123
 *         return result
 * 
 *     def getHashValue(self):             # <<<<<<<<<<<<<<
 *         """gets the calculated hash value of the partialdecomposition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getHashValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":131
 *         return result
 * 
 *     def getDetprobdata(self):             # <<<<<<<<<<<<<<
 *         """gets the corresponding detprobdata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata, "PartialDecomposition.getDetprobdata(self)\ngets the corresponding detprobdata\n\n        :return: corresponding detprobdata\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata = {"getDetprobdata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetprobdata (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDetprobdata", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDetprobdata", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  gcg::DETPROBDATA *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getDetprobdata", 1);

  /* "src/pygcgopt/decomposition.pxi":136
 *         :return: corresponding detprobdata
 *         """
 *         cdef DETPROBDATA* result = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return DetProbData.create(result)
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 136, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":137
 *         """
 *         cdef DETPROBDATA* result = self.thisptr.getDetprobdata()
 *         return DetProbData.create(result)             # <<<<<<<<<<<<<<
 * 
 *     def fixConsToMaster(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_11DetProbData_create(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":131
 *         return result
 * 
 *     def getDetprobdata(self):             # <<<<<<<<<<<<<<
 *         """gets the corresponding detprobdata
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getDetprobdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":139
 *         return DetProbData.create(result)
 * 
 *     def fixConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """fixes a Constraint to the master constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster, "PartialDecomposition.fixConsToMaster(self, Constraint cons)\nfixes a Constraint to the master constraints\n\n        :param cons: scip#Constraint to add\n        :type cons: Constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster = {"fixConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConsToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 139, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConsToMaster") < 0)) __PYX_ERR(2, 139, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConsToMaster", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConsToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 139, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConsToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":145
 *         :type cons: Constraint
 *         """
 *         self.thisptr.fixConsToMaster(cons.scip_cons)             # <<<<<<<<<<<<<<
 * 
 *     def fixConssToMaster(self, conss):
 */
  (void)(__pyx_v_self->thisptr->fixConsToMaster(__pyx_v_cons->scip_cons));

  /* "src/pygcgopt/decomposition.pxi":139
 *         return DetProbData.create(result)
 * 
 *     def fixConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """fixes a Constraint to the master constraints
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":147
 *         self.thisptr.fixConsToMaster(cons.scip_cons)
 * 
 *     def fixConssToMaster(self, conss):             # <<<<<<<<<<<<<<
 *         """fixes all constraints to the master constraints.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster, "PartialDecomposition.fixConssToMaster(self, conss)\nfixes all constraints to the master constraints.\n\n        :param conss: An iterable of scip#Constraint objects\n        :type conss: An iterable of scip#Constraint objects\n        :raises TypeError: occurs if conss is not an Iterable\n        .. seealso:: * :meth:`fixConsToMaster`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster = {"fixConssToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_conss = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConssToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_conss,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_conss)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 147, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConssToMaster") < 0)) __PYX_ERR(2, 147, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_conss = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConssToMaster", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_conss);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss) {
  PyObject *__pyx_v_cons = NULL;
  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;
  unsigned int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixConssToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":155
 *         .. seealso:: * :meth:`fixConsToMaster`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_conss, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "src/pygcgopt/decomposition.pxi":156
 *         """
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))             # <<<<<<<<<<<<<<
 *         for cons in conss:
 *             self.fixConsToMaster(<Constraint?>cons)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Expected_iterable_as_first_argum, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_conss))};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 156, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 156, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":155
 *         .. seealso:: * :meth:`fixConsToMaster`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 */
  }

  /* "src/pygcgopt/decomposition.pxi":157
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_conss)) || PyTuple_CheckExact(__pyx_v_conss)) {
    __pyx_t_4 = __pyx_v_conss; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_conss); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 157, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 157, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 157, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 157, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 157, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 157, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 157, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_8(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 157, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_cons, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/pygcgopt/decomposition.pxi":158
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 *             self.fixConsToMaster(<Constraint?>cons)             # <<<<<<<<<<<<<<
 * 
 *     def fixConsToBlockId(self, Constraint cons, int block_id):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fixConsToMaster); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(__Pyx_TypeTest(__pyx_v_cons, __pyx_ptype_9pyscipopt_4scip_Constraint)))) __PYX_ERR(2, 158, __pyx_L1_error)
    __pyx_t_9 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_cons};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/pygcgopt/decomposition.pxi":157
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/pygcgopt/decomposition.pxi":147
 *         self.thisptr.fixConsToMaster(cons.scip_cons)
 * 
 *     def fixConssToMaster(self, conss):             # <<<<<<<<<<<<<<
 *         """fixes all constraints to the master constraints.
 * 
 */

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cons);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":160
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 *     def fixConsToBlockId(self, Constraint cons, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId, "PartialDecomposition.fixConsToBlockId(self, Constraint cons, int block_id)\nAdds a constraint to a block.\n\n        :param cons: scip#Constraint to add\n        :type cons: Constraint\n        :param block_id: id of block to add.\n        :type block_id: int\n        :note: The passed ``block_id`` has to by of type integer and use the internal numbering of blocks. Before\n        calling this method, one has to ensure that the specified block exists. A more convenient alternative is\n        fixConsToBlock().\n\n        .. seealso:: * :meth:`addBlock`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId = {"fixConsToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConsToBlockId (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fixConsToBlockId", 1, 2, 2, 1); __PYX_ERR(2, 160, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConsToBlockId") < 0)) __PYX_ERR(2, 160, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConsToBlockId", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConsToBlockId", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 160, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons, __pyx_v_block_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, int __pyx_v_block_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConsToBlockId", 1);

  /* "src/pygcgopt/decomposition.pxi":173
 *         .. seealso:: * :meth:`addBlock`
 *         """
 *         self.thisptr.fixConsToBlock(cons.scip_cons, block_id)             # <<<<<<<<<<<<<<
 * 
 *     def fixConssToBlockId(self, conss, int block_id):
 */
  (void)(__pyx_v_self->thisptr->fixConsToBlock(__pyx_v_cons->scip_cons, __pyx_v_block_id));

  /* "src/pygcgopt/decomposition.pxi":160
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 *     def fixConsToBlockId(self, Constraint cons, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":175
 *         self.thisptr.fixConsToBlock(cons.scip_cons, block_id)
 * 
 *     def fixConssToBlockId(self, conss, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId, "PartialDecomposition.fixConssToBlockId(self, conss, int block_id)\nAdds all constraints to a block.\n\n        :param conss: An iterable of scip#Constraint objects\n        :param block_id: id of block to add\n        .. seealso:: * :meth:`fixConsToBlockId`\n                     * :meth:`fixConssToBlock`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId = {"fixConssToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_conss = 0;
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConssToBlockId (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_conss,&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_conss)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 175, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 175, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fixConssToBlockId", 1, 2, 2, 1); __PYX_ERR(2, 175, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConssToBlockId") < 0)) __PYX_ERR(2, 175, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_conss = values[0];
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 175, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConssToBlockId", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 175, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToBlockId", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_conss, __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss, int __pyx_v_block_id) {
  PyObject *__pyx_v_cons = NULL;
  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;
  unsigned int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  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("fixConssToBlockId", 1);

  /* "src/pygcgopt/decomposition.pxi":183
 *                      * :meth:`fixConssToBlock`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_conss, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "src/pygcgopt/decomposition.pxi":184
 *         """
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))             # <<<<<<<<<<<<<<
 *         for cons in conss:
 *             self.fixConsToBlockId(<Constraint?>cons, block_id)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Expected_iterable_as_first_argum, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_conss))};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 184, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":183
 *                      * :meth:`fixConssToBlock`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 */
  }

  /* "src/pygcgopt/decomposition.pxi":185
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             self.fixConsToBlockId(<Constraint?>cons, block_id)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_conss)) || PyTuple_CheckExact(__pyx_v_conss)) {
    __pyx_t_4 = __pyx_v_conss; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_conss); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 185, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 185, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 185, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_8(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 185, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_cons, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/pygcgopt/decomposition.pxi":186
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:
 *             self.fixConsToBlockId(<Constraint?>cons, block_id)             # <<<<<<<<<<<<<<
 * 
 *     #def fixVarToBlockId(self, Variable var, int block_id):
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fixConsToBlockId); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(__Pyx_TypeTest(__pyx_v_cons, __pyx_ptype_9pyscipopt_4scip_Constraint)))) __PYX_ERR(2, 186, __pyx_L1_error)
    __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_block_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_cons, __pyx_t_9};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 186, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/pygcgopt/decomposition.pxi":185
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             self.fixConsToBlockId(<Constraint?>cons, block_id)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/pygcgopt/decomposition.pxi":175
 *         self.thisptr.fixConsToBlock(cons.scip_cons, block_id)
 * 
 *     def fixConssToBlockId(self, conss, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToBlockId", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cons);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":207
 *     #        self.fixVarToBlockId(<Variable?>var, block_id)
 * 
 *     def fixConsToBlock(self, Constraint cons, object block):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock, "PartialDecomposition.fixConsToBlock(self, Constraint cons, block)\nAdds a constraint to a block.\n\n        :param cons: scip#Constraint to add\n        :param block: identifier of block to add. Can be any hashable Python object.\n        :return: the internal block_id assigned to the block.\n\n        This method will automatically manage the blocks of the decomposition and create blocks if neccessary.\n        The passed ``block`` identifiers will be mapped to internal block ids.\n\n        To address the internal blocks directly, use :meth:`fixConsToBlockId`.\n\n        .. seealso:: * :meth:`fixConssToBlock`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock = {"fixConsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  PyObject *__pyx_v_block = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConsToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,&__pyx_n_s_block,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 207, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 207, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fixConsToBlock", 1, 2, 2, 1); __PYX_ERR(2, 207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConsToBlock") < 0)) __PYX_ERR(2, 207, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
    __pyx_v_block = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConsToBlock", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 207, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 207, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons, __pyx_v_block);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons, PyObject *__pyx_v_block) {
  CYTHON_UNUSED PyObject *__pyx_v_i = NULL;
  int __pyx_v_block_id;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixConsToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":221
 *         .. seealso:: * :meth:`fixConssToBlock`
 *         """
 *         if block not in self.py_block_id_map:             # <<<<<<<<<<<<<<
 *             self.py_block_id_map.append(block)
 * 
 */
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_block, __pyx_v_self->py_block_id_map, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 221, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/pygcgopt/decomposition.pxi":222
 *         """
 *         if block not in self.py_block_id_map:
 *             self.py_block_id_map.append(block)             # <<<<<<<<<<<<<<
 * 
 *         # Extend the number of blocks if we do not have enough. Do not automatically shrink the block count to avoid
 */
    if (unlikely(__pyx_v_self->py_block_id_map == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
      __PYX_ERR(2, 222, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->py_block_id_map, __pyx_v_block); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 222, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":221
 *         .. seealso:: * :meth:`fixConssToBlock`
 *         """
 *         if block not in self.py_block_id_map:             # <<<<<<<<<<<<<<
 *             self.py_block_id_map.append(block)
 * 
 */
  }

  /* "src/pygcgopt/decomposition.pxi":226
 *         # Extend the number of blocks if we do not have enough. Do not automatically shrink the block count to avoid
 *         # interferance in case the user previously set a block count manually.
 *         if len(self.py_block_id_map) > self.getNBlocks():             # <<<<<<<<<<<<<<
 *             for i in range(len(self.py_block_id_map) - self.getNBlocks()):
 *                 self.addBlock()
 */
  __pyx_t_3 = __pyx_v_self->py_block_id_map;
  __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(2, 226, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNBlocks); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_8 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_1) {

    /* "src/pygcgopt/decomposition.pxi":227
 *         # interferance in case the user previously set a block count manually.
 *         if len(self.py_block_id_map) > self.getNBlocks():
 *             for i in range(len(self.py_block_id_map) - self.getNBlocks()):             # <<<<<<<<<<<<<<
 *                 self.addBlock()
 * 
 */
    __pyx_t_6 = __pyx_v_self->py_block_id_map;
    __Pyx_INCREF(__pyx_t_6);
    if (unlikely(__pyx_t_6 == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
      __PYX_ERR(2, 227, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyList_GET_SIZE(__pyx_t_6); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(2, 227, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNBlocks); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = PyNumber_Subtract(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_4 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 227, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 227, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(2, 227, __pyx_L1_error)
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 227, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(2, 227, __pyx_L1_error)
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        }
      } else {
        __pyx_t_5 = __pyx_t_9(__pyx_t_3);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 227, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/pygcgopt/decomposition.pxi":228
 *         if len(self.py_block_id_map) > self.getNBlocks():
 *             for i in range(len(self.py_block_id_map) - self.getNBlocks()):
 *                 self.addBlock()             # <<<<<<<<<<<<<<
 * 
 *         cdef int block_id = self.py_block_id_map.index(block)
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addBlock); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_8 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 228, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/pygcgopt/decomposition.pxi":227
 *         # interferance in case the user previously set a block count manually.
 *         if len(self.py_block_id_map) > self.getNBlocks():
 *             for i in range(len(self.py_block_id_map) - self.getNBlocks()):             # <<<<<<<<<<<<<<
 *                 self.addBlock()
 * 
 */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/pygcgopt/decomposition.pxi":226
 *         # Extend the number of blocks if we do not have enough. Do not automatically shrink the block count to avoid
 *         # interferance in case the user previously set a block count manually.
 *         if len(self.py_block_id_map) > self.getNBlocks():             # <<<<<<<<<<<<<<
 *             for i in range(len(self.py_block_id_map) - self.getNBlocks()):
 *                 self.addBlock()
 */
  }

  /* "src/pygcgopt/decomposition.pxi":230
 *                 self.addBlock()
 * 
 *         cdef int block_id = self.py_block_id_map.index(block)             # <<<<<<<<<<<<<<
 *         self.fixConsToBlockId(cons, block_id)
 *         return block_id
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->py_block_id_map, __pyx_n_s_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_8 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_block};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_block_id = __pyx_t_10;

  /* "src/pygcgopt/decomposition.pxi":231
 * 
 *         cdef int block_id = self.py_block_id_map.index(block)
 *         self.fixConsToBlockId(cons, block_id)             # <<<<<<<<<<<<<<
 *         return block_id
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fixConsToBlockId); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_block_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_8 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, ((PyObject *)__pyx_v_cons), __pyx_t_6};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/decomposition.pxi":232
 *         cdef int block_id = self.py_block_id_map.index(block)
 *         self.fixConsToBlockId(cons, block_id)
 *         return block_id             # <<<<<<<<<<<<<<
 * 
 *     def fixConssToBlock(self, conss, object block):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_block_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":207
 *     #        self.fixVarToBlockId(<Variable?>var, block_id)
 * 
 *     def fixConsToBlock(self, Constraint cons, object block):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":234
 *         return block_id
 * 
 *     def fixConssToBlock(self, conss, object block):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock, "PartialDecomposition.fixConssToBlock(self, conss, block)\nAdds all constraints to a block.\n\n        :param conss: An iterable of scip#Constraint objects\n        :param block: identifier of block to add. Can be any hashable Python object.\n        :return: the internal block_id assigned to the block.\n\n        .. seealso:: * :meth:`fixConsToBlock`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock = {"fixConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_conss = 0;
  PyObject *__pyx_v_block = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixConssToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_conss,&__pyx_n_s_block,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_conss)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 234, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 234, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fixConssToBlock", 1, 2, 2, 1); __PYX_ERR(2, 234, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixConssToBlock") < 0)) __PYX_ERR(2, 234, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_conss = values[0];
    __pyx_v_block = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixConssToBlock", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 234, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_conss, __pyx_v_block);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_conss, PyObject *__pyx_v_block) {
  int __pyx_v_block_id;
  PyObject *__pyx_v_cons = NULL;
  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;
  unsigned int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixConssToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":243
 *         .. seealso:: * :meth:`fixConsToBlock`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         cdef int block_id = -1  #assign no block_id at first
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_conss, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "src/pygcgopt/decomposition.pxi":244
 *         """
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))             # <<<<<<<<<<<<<<
 *         cdef int block_id = -1  #assign no block_id at first
 *         for cons in conss:
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Expected_iterable_as_first_argum, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_conss))};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 244, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":243
 *         .. seealso:: * :meth:`fixConsToBlock`
 *         """
 *         if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         cdef int block_id = -1  #assign no block_id at first
 */
  }

  /* "src/pygcgopt/decomposition.pxi":245
 *         if not isinstance(conss, Iterable):
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         cdef int block_id = -1  #assign no block_id at first             # <<<<<<<<<<<<<<
 *         for cons in conss:
 *             # block_id is the same for all blocks
 */
  __pyx_v_block_id = -1;

  /* "src/pygcgopt/decomposition.pxi":246
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         cdef int block_id = -1  #assign no block_id at first
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             # block_id is the same for all blocks
 *             block_id = self.fixConsToBlock(<Constraint?>cons, block)
 */
  if (likely(PyList_CheckExact(__pyx_v_conss)) || PyTuple_CheckExact(__pyx_v_conss)) {
    __pyx_t_4 = __pyx_v_conss; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_conss); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 246, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 246, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 246, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(2, 246, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 246, __pyx_L1_error)
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_8(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 246, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_cons, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/pygcgopt/decomposition.pxi":248
 *         for cons in conss:
 *             # block_id is the same for all blocks
 *             block_id = self.fixConsToBlock(<Constraint?>cons, block)             # <<<<<<<<<<<<<<
 *         return block_id
 * 
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fixConsToBlock); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(__Pyx_TypeTest(__pyx_v_cons, __pyx_ptype_9pyscipopt_4scip_Constraint)))) __PYX_ERR(2, 248, __pyx_L1_error)
    __pyx_t_9 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_cons, __pyx_v_block};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 248, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_block_id = __pyx_t_10;

    /* "src/pygcgopt/decomposition.pxi":246
 *             raise TypeError("Expected iterable as first argument. Got '{}' instead.".format(type(conss)))
 *         cdef int block_id = -1  #assign no block_id at first
 *         for cons in conss:             # <<<<<<<<<<<<<<
 *             # block_id is the same for all blocks
 *             block_id = self.fixConsToBlock(<Constraint?>cons, block)
 */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/pygcgopt/decomposition.pxi":249
 *             # block_id is the same for all blocks
 *             block_id = self.fixConsToBlock(<Constraint?>cons, block)
 *         return block_id             # <<<<<<<<<<<<<<
 * 
 *     def hasSetppccardMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_block_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":234
 *         return block_id
 * 
 *     def fixConssToBlock(self, conss, object block):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */

  /* 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_9);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cons);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":251
 *         return block_id
 * 
 *     def hasSetppccardMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing, set cover or cardinality constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster, "PartialDecomposition.hasSetppccardMaster(self)\nchecks if all master constraints set partitioning, set packing, set cover or cardinality constraints\n\n        :return: True iff all master constraints set partitioning, set packing, set cover or cardinality constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster = {"hasSetppccardMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasSetppccardMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasSetppccardMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasSetppccardMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  unsigned int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasSetppccardMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":256
 *         :return: True iff all master constraints set partitioning, set packing, set cover or cardinality constraints
 *         """
 *         cdef bool result = self.thisptr.hasSetppccardMaster()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->hasSetppccardMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 256, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":257
 *         """
 *         cdef bool result = self.thisptr.hasSetppccardMaster()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def hasSetppcMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":251
 *         return block_id
 * 
 *     def hasSetppccardMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing, set cover or cardinality constraints
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.hasSetppccardMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":259
 *         return result
 * 
 *     def hasSetppcMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing or set cover constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster, "PartialDecomposition.hasSetppcMaster(self)\nchecks if all master constraints set partitioning, set packing or set cover constraints\n\n        :return: True iff all master constraints set partitioning, set packing or set cover\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster = {"hasSetppcMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasSetppcMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasSetppcMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasSetppcMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  unsigned int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasSetppcMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":264
 *         :return: True iff all master constraints set partitioning, set packing or set cover
 *         """
 *         cdef bool result = self.thisptr.hasSetppcMaster()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->hasSetppcMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 264, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":265
 *         """
 *         cdef bool result = self.thisptr.hasSetppcMaster()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def hasSetppMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":259
 *         return result
 * 
 *     def hasSetppcMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing or set cover constraints
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.hasSetppcMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":267
 *         return result
 * 
 *     def hasSetppMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning or set packing constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster, "PartialDecomposition.hasSetppMaster(self)\nchecks if all master constraints set partitioning or set packing constraints\n\n        :return: True iff all master constraints set partitioning or set packing constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster = {"hasSetppMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasSetppMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasSetppMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasSetppMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  unsigned int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasSetppMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":272
 *         :return: True iff all master constraints set partitioning or set packing constraints
 *         """
 *         cdef bool result = self.thisptr.hasSetppMaster()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->hasSetppMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 272, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":273
 *         """
 *         cdef bool result = self.thisptr.hasSetppMaster()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNOpenconss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":267
 *         return result
 * 
 *     def hasSetppMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning or set packing constraints
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.hasSetppMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":275
 *         return result
 * 
 *     def getNOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of constraints that are opened (not assigned yet)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss, "PartialDecomposition.getNOpenconss(self)\ngets number of constraints that are opened (not assigned yet)\n\n        :return: number of open constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss = {"getNOpenconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNOpenconss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNOpenconss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNOpenconss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNOpenconss", 1);

  /* "src/pygcgopt/decomposition.pxi":280
 *         :return: number of open constraints
 *         """
 *         cdef int result = self.thisptr.getNOpenconss()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNOpenconss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 280, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":281
 *         """
 *         cdef int result = self.thisptr.getNOpenconss()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getOpenconss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":275
 *         return result
 * 
 *     def getNOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of constraints that are opened (not assigned yet)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNOpenconss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":283
 *         return result
 * 
 *     def getOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are opened (not assigned yet)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss, "PartialDecomposition.getOpenconss(self)\ngets a list of constraints that are opened (not assigned yet)\n\n        :return: list of constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss = {"getOpenconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getOpenconss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getOpenconss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOpenconss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_7genexpr__pyx_v_consIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_CONS *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOpenconss", 1);

  /* "src/pygcgopt/decomposition.pxi":288
 *         :return: list of constraints
 *         """
 *         cdef vector[int] result = self.thisptr.getOpenconssVec()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getOpenconssVec();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 288, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":289
 *         """
 *         cdef vector[int] result = self.thisptr.getOpenconssVec()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 289, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":290
 *         cdef vector[int] result = self.thisptr.getOpenconssVec()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNLinkingvars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_7genexpr__pyx_v_consIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getCons(__pyx_7genexpr__pyx_v_consIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 290, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 290, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":283
 *         return result
 * 
 *     def getOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are opened (not assigned yet)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getOpenconss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":292
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of linking variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars, "PartialDecomposition.getNLinkingvars(self)\ngets number of linking variables\n\n        :return: number of linking variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars = {"getNLinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNLinkingvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNLinkingvars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNLinkingvars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNLinkingvars", 1);

  /* "src/pygcgopt/decomposition.pxi":297
 *         :return: number of linking variables
 *         """
 *         cdef int result = self.thisptr.getNLinkingvars()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNLinkingvars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 297, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":298
 *         """
 *         cdef int result = self.thisptr.getNLinkingvars()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getLinkingvars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":292
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of linking variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNLinkingvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":300
 *         return result
 * 
 *     def getLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to linking variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars, "PartialDecomposition.getLinkingvars(self)\ngets a list of variables that are assigned to linking variables\n\n        :return: list of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars = {"getLinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getLinkingvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getLinkingvars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getLinkingvars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr1__pyx_v_varIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_VAR *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getLinkingvars", 1);

  /* "src/pygcgopt/decomposition.pxi":305
 *         :return: list of variables
 *         """
 *         cdef vector[int] result = self.thisptr.getLinkingvars()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getLinkingvars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 305, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":306
 *         """
 *         cdef vector[int] result = self.thisptr.getLinkingvars()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 306, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":307
 *         cdef vector[int] result = self.thisptr.getLinkingvars()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNMasterconss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr1__pyx_v_varIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getVar(__pyx_8genexpr1__pyx_v_varIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 307, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":300
 *         return result
 * 
 *     def getLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to linking variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getLinkingvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":309
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of master constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss, "PartialDecomposition.getNMasterconss(self)\ngets number of master constraints\n\n        :return: number of master constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss = {"getNMasterconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNMasterconss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNMasterconss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNMasterconss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNMasterconss", 1);

  /* "src/pygcgopt/decomposition.pxi":314
 *         :return: number of master constraints
 *         """
 *         cdef int result = self.thisptr.getNMasterconss()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNMasterconss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 314, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":315
 *         """
 *         cdef int result = self.thisptr.getNMasterconss()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getMasterconss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":309
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of master constraints
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNMasterconss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":317
 *         return result
 * 
 *     def getMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to master variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss, "PartialDecomposition.getMasterconss(self)\ngets a list of constraints that are assigned to master variables\n\n        :return: list of constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss = {"getMasterconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMasterconss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getMasterconss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getMasterconss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr2__pyx_v_consIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_CONS *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getMasterconss", 1);

  /* "src/pygcgopt/decomposition.pxi":322
 *         :return: list of constraints
 *         """
 *         cdef vector[int] result = self.thisptr.getMasterconss()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getMasterconss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 322, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":323
 *         """
 *         cdef vector[int] result = self.thisptr.getMasterconss()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 323, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":324
 *         cdef vector[int] result = self.thisptr.getMasterconss()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNMastervars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 324, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr2__pyx_v_consIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getCons(__pyx_8genexpr2__pyx_v_consIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 324, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 324, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 324, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":317
 *         return result
 * 
 *     def getMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to master variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getMasterconss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":326
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets number of master variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars, "PartialDecomposition.getNMastervars(self)\ngets number of master variables\n\n        :return: number of master variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars = {"getNMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNMastervars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNMastervars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNMastervars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNMastervars", 1);

  /* "src/pygcgopt/decomposition.pxi":331
 *         :return: number of master variables
 *         """
 *         cdef int result = self.thisptr.getNMastervars()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNMastervars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 331, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":332
 *         """
 *         cdef int result = self.thisptr.getNMastervars()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getMastervars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":326
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets number of master variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNMastervars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":334
 *         return result
 * 
 *     def getMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to master variables (static variables)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars, "PartialDecomposition.getMastervars(self)\ngets a list of variables that are assigned to master variables (static variables)\n\n        :return: list of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars = {"getMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMastervars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getMastervars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getMastervars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr3__pyx_v_varIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_VAR *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getMastervars", 1);

  /* "src/pygcgopt/decomposition.pxi":339
 *         :return: list of variables
 *         """
 *         cdef vector[int] result = self.thisptr.getMastervars()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getMastervars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 339, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":340
 *         """
 *         cdef vector[int] result = self.thisptr.getMastervars()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 340, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":341
 *         cdef vector[int] result = self.thisptr.getMastervars()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNOpenvars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr3__pyx_v_varIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getVar(__pyx_8genexpr3__pyx_v_varIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 341, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 341, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":334
 *         return result
 * 
 *     def getMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to master variables (static variables)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getMastervars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":343
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are opened (not assigned yet)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars, "PartialDecomposition.getNOpenvars(self)\ngets number of variables that are opened (not assigned yet)\n\n        :return: number of open variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars = {"getNOpenvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNOpenvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNOpenvars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNOpenvars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNOpenvars", 1);

  /* "src/pygcgopt/decomposition.pxi":348
 *         :return: number of open variables
 *         """
 *         cdef int result = self.thisptr.getNOpenvars()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNOpenvars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 348, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":349
 *         """
 *         cdef int result = self.thisptr.getNOpenvars()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getOpenvars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":343
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are opened (not assigned yet)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNOpenvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":351
 *         return result
 * 
 *     def getOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are opened (not assigned yet)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars, "PartialDecomposition.getOpenvars(self)\ngets a list of variables that are opened (not assigned yet)\n\n        :return: list of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars = {"getOpenvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getOpenvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getOpenvars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOpenvars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr4__pyx_v_varIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_VAR *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOpenvars", 1);

  /* "src/pygcgopt/decomposition.pxi":356
 *         :return: list of variables
 *         """
 *         cdef vector[int] result = self.thisptr.getOpenvarsVec()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getOpenvarsVec();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 356, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":357
 *         """
 *         cdef vector[int] result = self.thisptr.getOpenvarsVec()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 357, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":358
 *         cdef vector[int] result = self.thisptr.getOpenvarsVec()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNStairlinkingvars(self, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr4__pyx_v_varIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getVar(__pyx_8genexpr4__pyx_v_varIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 358, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 358, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 358, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":351
 *         return result
 * 
 *     def getOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are opened (not assigned yet)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getOpenvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":360
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNStairlinkingvars(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to stairlinking variables of the specified block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars, "PartialDecomposition.getNStairlinkingvars(self, int block_id)\ngets number of variables that are assigned to stairlinking variables of the specified block\n\n        :param block_id: id of the block the number of stairlinking variables is asked for\n        :return: number of stairlinking variables\n\n        .. note:: if a stairlinking variable links block i and i+1 it is only stored in vector of block i\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars = {"getNStairlinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNStairlinkingvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 360, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNStairlinkingvars") < 0)) __PYX_ERR(2, 360, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 360, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNStairlinkingvars", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNStairlinkingvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  int __pyx_v_result;
  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("getNStairlinkingvars", 1);

  /* "src/pygcgopt/decomposition.pxi":368
 *         .. note:: if a stairlinking variable links block i and i+1 it is only stored in vector of block i
 *         """
 *         cdef int result = self.thisptr.getNStairlinkingvars(block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNStairlinkingvars(__pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 368, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":369
 *         """
 *         cdef int result = self.thisptr.getNStairlinkingvars(block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     #def getStairlinkingvars(self, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":360
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNStairlinkingvars(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to stairlinking variables of the specified block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNStairlinkingvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":383
 *     #    return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to the specified block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock, "PartialDecomposition.getConssForBlock(self, int block_id)\ngets a list of constraints that are assigned to the specified block\n\n        :param block_id: id of the block the constraints is asked for\n        :return: list of constraints\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock = {"getConssForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConssForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 383, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getConssForBlock") < 0)) __PYX_ERR(2, 383, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 383, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getConssForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 383, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getConssForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr5__pyx_v_consIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_CONS *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConssForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":389
 *         :return: list of constraints
 *         """
 *         cdef vector[int] result = self.thisptr.getConssForBlock(block_id)             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getConssForBlock(__pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 389, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":390
 *         """
 *         cdef vector[int] result = self.thisptr.getConssForBlock(block_id)
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 390, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":391
 *         cdef vector[int] result = self.thisptr.getConssForBlock(block_id)
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def getConssForBlocks(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr5__pyx_v_consIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getCons(__pyx_8genexpr5__pyx_v_consIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 391, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 391, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":383
 *     #    return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to the specified block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getConssForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":393
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getConssForBlocks(self):             # <<<<<<<<<<<<<<
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks, "PartialDecomposition.getConssForBlocks(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks = {"getConssForBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConssForBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getConssForBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConssForBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<std::vector<int> >  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  std::vector<int>  __pyx_8genexpr6__pyx_v_block;
  int __pyx_8genexpr7__pyx_v_consIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<std::vector<int> >  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<std::vector<int> > ::iterator __pyx_t_4;
  std::vector<int>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  std::vector<int> ::iterator __pyx_t_7;
  int __pyx_t_8;
  SCIP_CONS *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConssForBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":394
 * 
 *     def getConssForBlocks(self):
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getConssForBlocks();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 394, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":395
 *     def getConssForBlocks(self):
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 395, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":396
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]             # <<<<<<<<<<<<<<
 * 
 *     def getNVarsForBlock(self, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr6__pyx_v_block = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
      { /* enter inner scope */
        __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 396, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_8genexpr6__pyx_v_block.begin();
        for (;;) {
          if (!(__pyx_t_7 != __pyx_8genexpr6__pyx_v_block.end())) break;
          __pyx_t_8 = *__pyx_t_7;
          ++__pyx_t_7;
          __pyx_8genexpr7__pyx_v_consIndex = __pyx_t_8;
          try {
            __pyx_t_9 = __pyx_v_det_prob_data->getCons(__pyx_8genexpr7__pyx_v_consIndex);
          } catch(...) {
            __Pyx_CppExn2PyErr();
            __PYX_ERR(2, 396, __pyx_L1_error)
          }
          __pyx_t_10 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 396, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_10))) __PYX_ERR(2, 396, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
      } /* exit inner scope */
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 396, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":393
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getConssForBlocks(self):             # <<<<<<<<<<<<<<
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getConssForBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":398
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 * 
 *     def getNVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to the specified block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock, "PartialDecomposition.getNVarsForBlock(self, int block_id)\ngets number of variables that are assigned to the specified block\n\n        :param block_id: id of the block the number of variables is asked for\n        :return: number of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock = {"getNVarsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarsForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 398, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNVarsForBlock") < 0)) __PYX_ERR(2, 398, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 398, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNVarsForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 398, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNVarsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  int __pyx_v_result;
  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("getNVarsForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":404
 *         :return: number of variables
 *         """
 *         cdef int result = self.thisptr.getNVarsForBlock(block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNVarsForBlock(__pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 404, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":405
 *         """
 *         cdef int result = self.thisptr.getNVarsForBlock(block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getVarsForBlock(self, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":398
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 * 
 *     def getNVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to the specified block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNVarsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":407
 *         return result
 * 
 *     def getVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to the specified block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock, "PartialDecomposition.getVarsForBlock(self, int block_id)\ngets a list of variables that are assigned to the specified block\n\n        :param block_id: id of the block the variables is asked for\n        :return: list of variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock = {"getVarsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVarsForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 407, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVarsForBlock") < 0)) __PYX_ERR(2, 407, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 407, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVarsForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 407, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getVarsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  std::vector<int>  __pyx_v_result;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  int __pyx_8genexpr8__pyx_v_varIndex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  gcg::DETPROBDATA *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<int> ::iterator __pyx_t_4;
  int __pyx_t_5;
  SCIP_VAR *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVarsForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":413
 *         :return: list of variables
 *         """
 *         cdef vector[int] result = self.thisptr.getVarsForBlock(block_id)             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getVarsForBlock(__pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 413, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":414
 *         """
 *         cdef vector[int] result = self.thisptr.getVarsForBlock(block_id)
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 414, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_2;

  /* "src/pygcgopt/decomposition.pxi":415
 *         cdef vector[int] result = self.thisptr.getVarsForBlock(block_id)
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]             # <<<<<<<<<<<<<<
 * 
 *     def setConsToMaster(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_4 != __pyx_v_result.end())) break;
      __pyx_t_5 = *__pyx_t_4;
      ++__pyx_t_4;
      __pyx_8genexpr8__pyx_v_varIndex = __pyx_t_5;
      try {
        __pyx_t_6 = __pyx_v_det_prob_data->getVar(__pyx_8genexpr8__pyx_v_varIndex);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(2, 415, __pyx_L1_error)
      }
      __pyx_t_7 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 415, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":407
 *         return result
 * 
 *     def getVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to the specified block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getVarsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":417
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def setConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """adds constraint to the master constraints, does not delete this constraint from list of open constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster, "PartialDecomposition.setConsToMaster(self, Constraint cons)\nadds constraint to the master constraints, does not delete this constraint from list of open constraints\n\n        :param cons: scip#Constraint to add\n        :type cons: Constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster = {"setConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setConsToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 417, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setConsToMaster") < 0)) __PYX_ERR(2, 417, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setConsToMaster", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 417, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setConsToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 417, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setConsToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":423
 *         :type cons: Constraint
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 423, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":424
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))             # <<<<<<<<<<<<<<
 * 
 *     def setVarToBlockId(self, Variable var, int block_id):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 424, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->setConsToMaster(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 424, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":417
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def setConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """adds constraint to the master constraints, does not delete this constraint from list of open constraints
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setConsToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":426
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def setVarToBlockId(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId, "PartialDecomposition.setVarToBlockId(self, Variable var, int block_id)\nadds variable to the linking variables, does not delete this variable from list of open variables\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        :param block_id: id of block to add\n        :type block_id: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId = {"setVarToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarToBlockId (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 426, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 426, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarToBlockId", 1, 2, 2, 1); __PYX_ERR(2, 426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarToBlockId") < 0)) __PYX_ERR(2, 426, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 426, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarToBlockId", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 426, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToBlockId", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 426, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var, __pyx_v_block_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id) {
  int __pyx_v_cpp_block_id;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarToBlockId", 1);

  /* "src/pygcgopt/decomposition.pxi":434
 *         :type block_id: int
 *         """
 *         cdef int cpp_block_id = block_id             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 */
  __pyx_v_cpp_block_id = __pyx_v_block_id;

  /* "src/pygcgopt/decomposition.pxi":435
 *         """
 *         cdef int cpp_block_id = block_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 435, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":436
 *         cdef int cpp_block_id = block_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)             # <<<<<<<<<<<<<<
 * 
 *     def setVarToLinking(self, Variable var):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 436, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->setVarToBlock(__pyx_t_2, __pyx_v_cpp_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 436, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":426
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def setVarToBlockId(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToBlockId", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":438
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 * 
 *     def setVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking, "PartialDecomposition.setVarToLinking(self, Variable var)\nadds variable to the linking variables, does not delete this variable from list of open variables\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking = {"setVarToLinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarToLinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 438, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarToLinking") < 0)) __PYX_ERR(2, 438, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarToLinking", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 438, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToLinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 438, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarToLinking", 1);

  /* "src/pygcgopt/decomposition.pxi":444
 *         :type var: Variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 444, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":445
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 * 
 *     def fixVarToLinking(self, Variable var):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 445, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->setVarToLinking(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 445, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":438
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 * 
 *     def setVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToLinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":447
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking, "PartialDecomposition.fixVarToLinking(self, Variable var)\nadds variable to the linking variables\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking = {"fixVarToLinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixVarToLinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixVarToLinking") < 0)) __PYX_ERR(2, 447, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixVarToLinking", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 447, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToLinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 447, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixVarToLinking", 1);

  /* "src/pygcgopt/decomposition.pxi":453
 *         :type var: Variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 453, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":454
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 * 
 *     def setVarToMaster(self, Variable var):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 454, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->fixVarToLinking(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 454, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":447
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToLinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":456
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables, does not delete this variable from list of open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster, "PartialDecomposition.setVarToMaster(self, Variable var)\nadds variable to the master variables, does not delete this variable from list of open variables\n\n        master variables hit only constraints in the master\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster = {"setVarToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 456, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarToMaster") < 0)) __PYX_ERR(2, 456, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarToMaster", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 456, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 456, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":464
 *         :type var: Variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 464, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":465
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 * 
 *     def fixVarToMaster(self, Variable var):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 465, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->setVarToMaster(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 465, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":456
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables, does not delete this variable from list of open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":467
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster, "PartialDecomposition.fixVarToMaster(self, Variable var)\nadds variable to the master variables\n\n        master variables hit only constraints in the master\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster = {"fixVarToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixVarToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 467, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixVarToMaster") < 0)) __PYX_ERR(2, 467, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixVarToMaster", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 467, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 467, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixVarToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":475
 *         :type var: Variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 475, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":476
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 * 
 *     def setVarToStairlinking(self, Variable var, int block1_id, int block2_id):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 476, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->fixVarToMaster(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 476, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":467
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":478
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToStairlinking(self, Variable var, int block1_id, int block2_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables, does not delete this variable from list of open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking, "PartialDecomposition.setVarToStairlinking(self, Variable var, int block1_id, int block2_id)\nadds variable to the stairlinking variables, does not delete this variable from list of open variables\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        :param block1_id: id of block one\n        :type block1_id: int\n        :param block2_id: id of block two\n        :type block2_id: int\n        .. note:: stairlinking variables are only registered in block with smaller index\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking = {"setVarToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  int __pyx_v_block1_id;
  int __pyx_v_block2_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarToStairlinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_block1_id,&__pyx_n_s_block2_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block1_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarToStairlinking", 1, 3, 3, 1); __PYX_ERR(2, 478, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block2_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarToStairlinking", 1, 3, 3, 2); __PYX_ERR(2, 478, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarToStairlinking") < 0)) __PYX_ERR(2, 478, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_block1_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block1_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
    __pyx_v_block2_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_block2_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarToStairlinking", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 478, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 478, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var, __pyx_v_block1_id, __pyx_v_block2_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block1_id, int __pyx_v_block2_id) {
  int __pyx_v_cpp_block1_id;
  int __pyx_v_cpp_block2_id;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarToStairlinking", 1);

  /* "src/pygcgopt/decomposition.pxi":489
 *         .. note:: stairlinking variables are only registered in block with smaller index
 *         """
 *         cdef int cpp_block1_id = block1_id             # <<<<<<<<<<<<<<
 *         cdef int cpp_block2_id = block2_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 */
  __pyx_v_cpp_block1_id = __pyx_v_block1_id;

  /* "src/pygcgopt/decomposition.pxi":490
 *         """
 *         cdef int cpp_block1_id = block1_id
 *         cdef int cpp_block2_id = block2_id             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 */
  __pyx_v_cpp_block2_id = __pyx_v_block2_id;

  /* "src/pygcgopt/decomposition.pxi":491
 *         cdef int cpp_block1_id = block1_id
 *         cdef int cpp_block2_id = block2_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 491, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":492
 *         cdef int cpp_block2_id = block2_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)             # <<<<<<<<<<<<<<
 * 
 *     def fixVarToStairlinking(self, Variable var, int firstblock_id):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 492, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->setVarToStairlinking(__pyx_t_2, __pyx_v_cpp_block1_id, __pyx_v_cpp_block2_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 492, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":478
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToStairlinking(self, Variable var, int block1_id, int block2_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables, does not delete this variable from list of open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarToStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":494
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 * 
 *     def fixVarToStairlinking(self, Variable var, int firstblock_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking, "PartialDecomposition.fixVarToStairlinking(self, Variable var, int firstblock_id)\nadds variable to the stairlinking variables\n\n        :param var: scip#Variable to add\n        :type var: Variable\n        :param firstblock_id: stairlinking variables hit exactly two consecutive blocks, this is the index of the first of these blocks\n        :type firstblock_id: int\n        .. note:: stairlinking variables are only registered in block with smaller index\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking = {"fixVarToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  int __pyx_v_firstblock_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fixVarToStairlinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_firstblock_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 494, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_firstblock_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 494, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fixVarToStairlinking", 1, 2, 2, 1); __PYX_ERR(2, 494, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fixVarToStairlinking") < 0)) __PYX_ERR(2, 494, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_firstblock_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_firstblock_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 494, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fixVarToStairlinking", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 494, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 494, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var, __pyx_v_firstblock_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_firstblock_id) {
  int __pyx_v_cpp_firstblock_id;
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fixVarToStairlinking", 1);

  /* "src/pygcgopt/decomposition.pxi":503
 *         .. note:: stairlinking variables are only registered in block with smaller index
 *         """
 *         cdef int cpp_firstblock_id = firstblock_id             # <<<<<<<<<<<<<<
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 */
  __pyx_v_cpp_firstblock_id = __pyx_v_firstblock_id;

  /* "src/pygcgopt/decomposition.pxi":504
 *         """
 *         cdef int cpp_firstblock_id = firstblock_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 504, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":505
 *         cdef int cpp_firstblock_id = firstblock_id
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)             # <<<<<<<<<<<<<<
 * 
 *     def isConsMastercons(self, Constraint cons):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 505, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->fixVarToStairlinking(__pyx_t_2, __pyx_v_cpp_firstblock_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 505, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":494
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 * 
 *     def fixVarToStairlinking(self, Variable var, int firstblock_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.fixVarToStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":507
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 * 
 *     def isConsMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is a master constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons, "PartialDecomposition.isConsMastercons(self, Constraint cons)\ngets whether the constraint is a master constraint\n\n        :param cons: constraint to check if it is master constraint\n        :type cons: scip#Constraint\n        :return: True iff the constraint is a master constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons = {"isConsMastercons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsMastercons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 507, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsMastercons") < 0)) __PYX_ERR(2, 507, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsMastercons", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 507, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isConsMastercons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 507, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsMastercons", 1);

  /* "src/pygcgopt/decomposition.pxi":514
 *         :return: True iff the constraint is a master constraint
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isConsMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 514, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":515
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isConsMastercons(det_prob_data.getIndexForCons(cons.scip_cons))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 515, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isConsMastercons(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 515, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":516
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isConsMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isConsOpencons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":507
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 * 
 *     def isConsMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is a master constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isConsMastercons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":518
 *         return result
 * 
 *     def isConsOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is an open constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons, "PartialDecomposition.isConsOpencons(self, Constraint cons)\ngets whether the constraint is an open constraint\n\n        :param cons: constraint to check if it is open constraint\n        :type cons: scip#Constraint\n        :return: True iff the constraint is an open constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons = {"isConsOpencons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsOpencons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 518, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsOpencons") < 0)) __PYX_ERR(2, 518, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsOpencons", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 518, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isConsOpencons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 518, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsOpencons", 1);

  /* "src/pygcgopt/decomposition.pxi":525
 *         :return: True iff the constraint is an open constraint
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isConsOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 525, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":526
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isConsOpencons(det_prob_data.getIndexForCons(cons.scip_cons))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 526, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isConsOpencons(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 526, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":527
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isConsOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarBlockvarOfBlock(self, Variable var, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":518
 *         return result
 * 
 *     def isConsOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is an open constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isConsOpencons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":529
 *         return result
 * 
 *     def isVarBlockvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is assigned to the block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock, "PartialDecomposition.isVarBlockvarOfBlock(self, Variable var, int block_id)\ngets whether the variable is assigned to the block\n\n        :param var: variable to check if it is in the specified block\n        :type var: scip#Variable\n        :param block_id: id of block to check\n        :return: True iff the variable is assigned to the specified block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock = {"isVarBlockvarOfBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarBlockvarOfBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 529, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 529, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("isVarBlockvarOfBlock", 1, 2, 2, 1); __PYX_ERR(2, 529, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarBlockvarOfBlock") < 0)) __PYX_ERR(2, 529, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 529, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarBlockvarOfBlock", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 529, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarBlockvarOfBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 529, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var, __pyx_v_block_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarBlockvarOfBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":537
 *         :return: True iff the variable is assigned to the specified block
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarBlockvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 537, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":538
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarBlockvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 538, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarBlockvarOfBlock(__pyx_t_2, __pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 538, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":539
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarBlockvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarLinkingvar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":529
 *         return result
 * 
 *     def isVarBlockvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is assigned to the block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarBlockvarOfBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":541
 *         return result
 * 
 *     def isVarLinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a linking variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar, "PartialDecomposition.isVarLinkingvar(self, Variable var)\ngets whether the variable is a linking variable\n\n        :param var: variable to check if it is in a linking variable\n        :type var: scip#Variable\n        :return: True iff the variable is a linking var\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar = {"isVarLinkingvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarLinkingvar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 541, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarLinkingvar") < 0)) __PYX_ERR(2, 541, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarLinkingvar", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarLinkingvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 541, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarLinkingvar", 1);

  /* "src/pygcgopt/decomposition.pxi":548
 *         :return: True iff the variable is a linking var
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarLinkingvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 548, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":549
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarLinkingvar(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 549, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarLinkingvar(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 549, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":550
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarLinkingvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarMastervar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":541
 *         return result
 * 
 *     def isVarLinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a linking variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarLinkingvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":552
 *         return result
 * 
 *     def isVarMastervar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a master variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar, "PartialDecomposition.isVarMastervar(self, Variable var)\ngets whether the variable is a master variable\n\n        :param var: variable to check if it is a master variable\n        :type var: scip#Variable\n        :return: True iff the variable is a master variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar = {"isVarMastervar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarMastervar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 552, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarMastervar") < 0)) __PYX_ERR(2, 552, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarMastervar", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 552, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarMastervar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 552, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarMastervar", 1);

  /* "src/pygcgopt/decomposition.pxi":559
 *         :return: True iff the variable is a master variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarMastervar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 559, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":560
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarMastervar(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 560, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarMastervar(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 560, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":561
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarMastervar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarOpenvar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":552
 *         return result
 * 
 *     def isVarMastervar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a master variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarMastervar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":563
 *         return result
 * 
 *     def isVarOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is an open variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar, "PartialDecomposition.isVarOpenvar(self, Variable var)\ngets whether the variable is an open variable\n\n        :param var: variable to check if it is an open variable\n        :type var: scip#Variable\n        :return: True iff the variable is an open variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar = {"isVarOpenvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarOpenvar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 563, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarOpenvar") < 0)) __PYX_ERR(2, 563, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarOpenvar", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 563, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarOpenvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 563, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarOpenvar", 1);

  /* "src/pygcgopt/decomposition.pxi":570
 *         :return: True iff the variable is an open variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 570, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":571
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarOpenvar(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 571, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarOpenvar(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 571, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":572
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarStairlinkingvar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":563
 *         return result
 * 
 *     def isVarOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is an open variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarOpenvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":574
 *         return result
 * 
 *     def isVarStairlinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a stairlinking variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar, "PartialDecomposition.isVarStairlinkingvar(self, Variable var)\ngets whether the variable is a stairlinking variable\n\n        :param var: variable to check if it is a stairlinking variable\n        :type var: scip#Variable\n        :return: True iff the variable is a stairlinking variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar = {"isVarStairlinkingvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarStairlinkingvar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 574, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarStairlinkingvar") < 0)) __PYX_ERR(2, 574, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarStairlinkingvar", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 574, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarStairlinkingvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 574, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarStairlinkingvar", 1);

  /* "src/pygcgopt/decomposition.pxi":581
 *         :return: True iff the variable is a stairlinking variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarStairlinkingvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 581, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":582
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarStairlinkingvar(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 582, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarStairlinkingvar(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 582, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":583
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarStairlinkingvar(det_prob_data.getIndexForVar(var.scip_var))
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def isVarStairlinkingvarOfBlock(self, Variable var, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":574
 *         return result
 * 
 *     def isVarStairlinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a stairlinking variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarStairlinkingvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":585
 *         return result
 * 
 *     def isVarStairlinkingvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """checks whether the var is a stairlinkingvar of a specified block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock, "PartialDecomposition.isVarStairlinkingvarOfBlock(self, Variable var, int block_id)\nchecks whether the var is a stairlinkingvar of a specified block\n\n        :param var: variable to check if it is a stairlinking variable hitting the specified block\n        :type var: scip#Variable\n        :param block_id: id of block to check\n        :return: True iff the variable is a stairlinking variable of the specified block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock = {"isVarStairlinkingvarOfBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isVarStairlinkingvarOfBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 585, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 585, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("isVarStairlinkingvarOfBlock", 1, 2, 2, 1); __PYX_ERR(2, 585, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isVarStairlinkingvarOfBlock") < 0)) __PYX_ERR(2, 585, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 585, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isVarStairlinkingvarOfBlock", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 585, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarStairlinkingvarOfBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 585, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var, __pyx_v_block_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var, int __pyx_v_block_id) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isVarStairlinkingvarOfBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":593
 *         :return: True iff the variable is a stairlinking variable of the specified block
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         cdef bool result = self.thisptr.isVarStairlinkingvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)
 *         return result
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 593, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":594
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarStairlinkingvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 594, __pyx_L1_error)
  }
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->isVarStairlinkingvarOfBlock(__pyx_t_2, __pyx_v_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 594, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_3;

  /* "src/pygcgopt/decomposition.pxi":595
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         cdef bool result = self.thisptr.isVarStairlinkingvarOfBlock(det_prob_data.getIndexForVar(var.scip_var), block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def deleteOpencons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":585
 *         return result
 * 
 *     def isVarStairlinkingvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """checks whether the var is a stairlinkingvar of a specified block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isVarStairlinkingvarOfBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":597
 *         return result
 * 
 *     def deleteOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """deletes constraint from list of open constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons, "PartialDecomposition.deleteOpencons(self, Constraint cons)\ndeletes constraint from list of open constraints\n\n        :param cons: scip#Constraint that is not considered open anymore\n        :type cons: Constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons = {"deleteOpencons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deleteOpencons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 597, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "deleteOpencons") < 0)) __PYX_ERR(2, 597, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deleteOpencons", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 597, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteOpencons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 597, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deleteOpencons", 1);

  /* "src/pygcgopt/decomposition.pxi":603
 *         :type cons: Constraint
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 603, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":604
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))             # <<<<<<<<<<<<<<
 * 
 *     def deleteOpenvar(self, Variable var):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 604, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->deleteOpencons(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 604, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":597
 *         return result
 * 
 *     def deleteOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """deletes constraint from list of open constraints
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteOpencons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":606
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def deleteOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """deletes variable from the list of open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar, "PartialDecomposition.deleteOpenvar(self, Variable var)\ndeletes variable from the list of open variables\n\n        :param var: scip#Variable that is not considered open anymore\n        :type var: Variable\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar = {"deleteOpenvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deleteOpenvar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 606, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "deleteOpenvar") < 0)) __PYX_ERR(2, 606, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deleteOpenvar", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 606, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteOpenvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(2, 606, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deleteOpenvar", 1);

  /* "src/pygcgopt/decomposition.pxi":612
 *         :type var: Variable
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 612, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":613
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))             # <<<<<<<<<<<<<<
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 613, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->deleteOpenvar(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 613, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":606
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def deleteOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """deletes variable from the list of open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteOpenvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":615
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):             # <<<<<<<<<<<<<<
 *         self.thisptr.setUsergiven(value)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven, "PartialDecomposition.setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven = {"setUsergiven", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  gcg::USERGIVEN __pyx_v_value;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setUsergiven (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 615, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setUsergiven") < 0)) __PYX_ERR(2, 615, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_value = ((gcg::USERGIVEN)__Pyx_PyInt_As_gcg_3a__3a_USERGIVEN(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 615, __pyx_L3_error)
    } else {
      __pyx_v_value = __pyx_k__5;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setUsergiven", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 615, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setUsergiven", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_value);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, gcg::USERGIVEN __pyx_v_value) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setUsergiven", 1);

  /* "src/pygcgopt/decomposition.pxi":616
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):
 *         self.thisptr.setUsergiven(value)             # <<<<<<<<<<<<<<
 * 
 *     def getUsergiven(self):
 */
  try {
    __pyx_v_self->thisptr->setUsergiven(__pyx_v_value);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 616, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":615
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):             # <<<<<<<<<<<<<<
 *         self.thisptr.setUsergiven(value)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setUsergiven", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":618
 *         self.thisptr.setUsergiven(value)
 * 
 *     def getUsergiven(self):             # <<<<<<<<<<<<<<
 *         """gets the PY_USERGIVEN status of this partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven, "PartialDecomposition.getUsergiven(self)\ngets the PY_USERGIVEN status of this partialdecs\n\n        :return: the PY_USERGIVEN status of this partialdecs\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven = {"getUsergiven", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getUsergiven (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getUsergiven", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getUsergiven", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::USERGIVEN __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getUsergiven", 1);

  /* "src/pygcgopt/decomposition.pxi":623
 *         :return: the PY_USERGIVEN status of this partialdecs
 *         """
 *         return self.thisptr.getUsergiven()             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getUsergiven();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 623, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":618
 *         self.thisptr.setUsergiven(value)
 * 
 *     def getUsergiven(self):             # <<<<<<<<<<<<<<
 *         """gets the PY_USERGIVEN status of this partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getUsergiven", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":625
 *         return self.thisptr.getUsergiven()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_white_score(self):
 *         """gets the maximum white area score
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":634
 *         :return: maximum  white area score
 *         """
 *         return self.thisptr.getMaxWhiteScore()             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getMaxWhiteScore();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 634, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":625
 *         return self.thisptr.getUsergiven()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_white_score(self):
 *         """gets the maximum white area score
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.max_white_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":636
 *         return self.thisptr.getMaxWhiteScore()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def classic_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("classic")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13classic_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13classic_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13classic_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13classic_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":638
 *     @property
 *     def classic_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("classic")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 638, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_n_u_classic};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 638, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 638, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 638, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":636
 *         return self.thisptr.getMaxWhiteScore()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def classic_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("classic")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.classic_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":640
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("classic")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def border_area_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("border area")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":642
 *     @property
 *     def border_area_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("border area")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 642, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_border_area};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 642, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 642, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 642, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":640
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("classic")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def border_area_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("border area")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.border_area_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":644
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("border area")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":646
 *     @property
 *     def max_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 646, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_max_foreseeing_white};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 646, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 646, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":644
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("border area")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.max_for_white_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":648
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def set_part_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white with aggregation info")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":650
 *     @property
 *     def set_part_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white with aggregation info")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 650, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_ppc_max_white_with_aggregation_i};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 650, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 650, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 650, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":648
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def set_part_for_white_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white with aggregation info")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.set_part_for_white_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":652
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white with aggregation info")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white with aggregation info")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":654
 *     @property
 *     def max_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white with aggregation info")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 654, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_max_foreseeing_white_with_aggreg};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 654, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 654, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 654, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":652
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white with aggregation info")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white with aggregation info")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.max_for_white_agg_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":656
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white with aggregation info")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def set_part_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":658
 *     @property
 *     def set_part_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 658, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_ppc_max_white};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 658, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 658, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":656
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("max foreseeing white with aggregation info")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def set_part_for_white_agg_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.set_part_for_white_agg_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":660
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def benders_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("experimental benders score")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13benders_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13benders_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13benders_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_13benders_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":662
 *     @property
 *     def benders_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("experimental benders score")))             # <<<<<<<<<<<<<<
 * 
 *     @property
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 662, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_experimental_benders_score};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 662, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 662, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":660
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("ppc-max-white")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def benders_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("experimental benders score")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.benders_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":664
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("experimental benders score")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def strong_decomp_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/pygcgopt/decomposition.pxi":666
 *     @property
 *     def strong_decomp_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))             # <<<<<<<<<<<<<<
 * 
 *     def addClockTime(self, double clocktime):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 666, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_u_strong_decomposition_score};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 666, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 666, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":664
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("experimental benders score")))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def strong_decomp_score(self):
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.strong_decomp_score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":668
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 * 
 *     def addClockTime(self, double clocktime):             # <<<<<<<<<<<<<<
 *         """adds detection time of one detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime, "PartialDecomposition.addClockTime(self, double clocktime)\nadds detection time of one detector\n\n        incorporates the needed time of some detector in the detector chain.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime = {"addClockTime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_clocktime;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addClockTime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_clocktime,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_clocktime)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 668, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addClockTime") < 0)) __PYX_ERR(2, 668, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_clocktime = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_clocktime == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 668, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addClockTime", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 668, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addClockTime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_clocktime);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_clocktime) {
  double __pyx_v_cpp_clocktime;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addClockTime", 1);

  /* "src/pygcgopt/decomposition.pxi":673
 *         incorporates the needed time of some detector in the detector chain.
 *         """
 *         cdef double cpp_clocktime = clocktime             # <<<<<<<<<<<<<<
 *         self.thisptr.addClockTime(cpp_clocktime)
 * 
 */
  __pyx_v_cpp_clocktime = __pyx_v_clocktime;

  /* "src/pygcgopt/decomposition.pxi":674
 *         """
 *         cdef double cpp_clocktime = clocktime
 *         self.thisptr.addClockTime(cpp_clocktime)             # <<<<<<<<<<<<<<
 * 
 *     def addPctConssFromFree(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addClockTime(__pyx_v_cpp_clocktime);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 674, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":668
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 * 
 *     def addClockTime(self, double clocktime):             # <<<<<<<<<<<<<<
 *         """adds detection time of one detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addClockTime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":676
 *         self.thisptr.addClockTime(cpp_clocktime)
 * 
 *     def addPctConssFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed constraints
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree, "PartialDecomposition.addPctConssFromFree(self, double pct)\nadds percentage of closed constraints\n\n        bookkeeping information: fraction of constraints that are not longer open for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree = {"addPctConssFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctConssFromFree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 676, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctConssFromFree") < 0)) __PYX_ERR(2, 676, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 676, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctConssFromFree", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 676, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctConssFromFree", 1);

  /* "src/pygcgopt/decomposition.pxi":681
 *         bookkeeping information: fraction of constraints that are not longer open for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctConssFromFree(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":682
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctConssFromFree(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def addPctConssToBlock(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addPctConssFromFree(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 682, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":676
 *         self.thisptr.addClockTime(cpp_clocktime)
 * 
 *     def addPctConssFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed constraints
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":684
 *         self.thisptr.addPctConssFromFree(cpp_pct)
 * 
 *     def addPctConssToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to blocks
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock, "PartialDecomposition.addPctConssToBlock(self, double pct)\nadds percentage of constraints assigned to blocks\n\n        bookkeeping information: adds fraction of constraints assigned to a block for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock = {"addPctConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctConssToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 684, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctConssToBlock") < 0)) __PYX_ERR(2, 684, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 684, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctConssToBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 684, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctConssToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":689
 *         bookkeeping information: adds fraction of constraints assigned to a block for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctConssToBlock(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":690
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctConssToBlock(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def addPctConssToBorder(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addPctConssToBlock(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 690, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":684
 *         self.thisptr.addPctConssFromFree(cpp_pct)
 * 
 *     def addPctConssToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to blocks
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":692
 *         self.thisptr.addPctConssToBlock(cpp_pct)
 * 
 *     def addPctConssToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to border
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder, "PartialDecomposition.addPctConssToBorder(self, double pct)\nadds percentage of constraints assigned to border\n\n        bookkeeping information: adds fraction of constraints assigned to the border for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder = {"addPctConssToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctConssToBorder (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 692, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctConssToBorder") < 0)) __PYX_ERR(2, 692, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 692, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctConssToBorder", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 692, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctConssToBorder", 1);

  /* "src/pygcgopt/decomposition.pxi":697
 *         bookkeeping information: adds fraction of constraints assigned to the border for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctConssToBorder(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":698
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctConssToBorder(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def addPctVarsFromFree(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addPctConssToBorder(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 698, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":692
 *         self.thisptr.addPctConssToBlock(cpp_pct)
 * 
 *     def addPctConssToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to border
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctConssToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":700
 *         self.thisptr.addPctConssToBorder(cpp_pct)
 * 
 *     def addPctVarsFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree, "PartialDecomposition.addPctVarsFromFree(self, double pct)\nadds percentage of closed variables\n\n        bookkeeping information: adds fraction of variables that are not longer open for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree = {"addPctVarsFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctVarsFromFree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 700, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctVarsFromFree") < 0)) __PYX_ERR(2, 700, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 700, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctVarsFromFree", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 700, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctVarsFromFree", 1);

  /* "src/pygcgopt/decomposition.pxi":705
 *         bookkeeping information: adds fraction of variables that are not longer open for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctVarsFromFree(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":706
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctVarsFromFree(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def addPctVarsToBlock(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addPctVarsFromFree(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 706, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":700
 *         self.thisptr.addPctConssToBorder(cpp_pct)
 * 
 *     def addPctVarsFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":708
 *         self.thisptr.addPctVarsFromFree(cpp_pct)
 * 
 *     def addPctVarsToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to blocks
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock, "PartialDecomposition.addPctVarsToBlock(self, double pct)\nadds percentage of variables assigned to blocks\n\n        bookkeeping information: adds fraction of variables assigned to a block for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock = {"addPctVarsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctVarsToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 708, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctVarsToBlock") < 0)) __PYX_ERR(2, 708, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 708, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctVarsToBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 708, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctVarsToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":713
 *         bookkeeping information: adds fraction of variables assigned to a block for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctVarsToBlock(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":714
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctVarsToBlock(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def addPctVarsToBorder(self, double pct):
 */
  try {
    __pyx_v_self->thisptr->addPctVarsToBlock(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 714, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":708
 *         self.thisptr.addPctVarsFromFree(cpp_pct)
 * 
 *     def addPctVarsToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to blocks
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":716
 *         self.thisptr.addPctVarsToBlock(cpp_pct)
 * 
 *     def addPctVarsToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to border
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder, "PartialDecomposition.addPctVarsToBorder(self, double pct)\nadds percentage of variables assigned to border\n\n        bookkeeping information: adds fraction of variables assigned to the border for a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder = {"addPctVarsToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_pct;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPctVarsToBorder (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pct,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pct)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 716, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPctVarsToBorder") < 0)) __PYX_ERR(2, 716, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pct = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_pct == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 716, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPctVarsToBorder", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 716, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_pct);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, double __pyx_v_pct) {
  double __pyx_v_cpp_pct;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPctVarsToBorder", 1);

  /* "src/pygcgopt/decomposition.pxi":721
 *         bookkeeping information: adds fraction of variables assigned to the border for a detector added to detector chain
 *         """
 *         cdef double cpp_pct = pct             # <<<<<<<<<<<<<<
 *         self.thisptr.addPctVarsToBorder(cpp_pct)
 * 
 */
  __pyx_v_cpp_pct = __pyx_v_pct;

  /* "src/pygcgopt/decomposition.pxi":722
 *         """
 *         cdef double cpp_pct = pct
 *         self.thisptr.addPctVarsToBorder(cpp_pct)             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsToBorder(self, int detectorchainindex):
 */
  try {
    __pyx_v_self->thisptr->addPctVarsToBorder(__pyx_v_cpp_pct);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 722, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":716
 *         self.thisptr.addPctVarsToBlock(cpp_pct)
 * 
 *     def addPctVarsToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to border
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addPctVarsToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":724
 *         self.thisptr.addPctVarsToBorder(cpp_pct)
 * 
 *     def getPctVarsToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder, "PartialDecomposition.getPctVarsToBorder(self, int detectorchainindex)\ngets fraction of variables assigned to the border for a detector\n\n        :return: fraction of variables assigned to the border for a detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder = {"getPctVarsToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsToBorder (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 724, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctVarsToBorder") < 0)) __PYX_ERR(2, 724, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 724, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctVarsToBorder", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 724, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsToBorder", 1);

  /* "src/pygcgopt/decomposition.pxi":729
 *         :return: fraction of variables assigned to the border for a detector
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctVarsToBorder(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":730
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsToBorder(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsToBorder(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 730, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":731
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsToBorder(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsToBorderVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":724
 *         self.thisptr.addPctVarsToBorder(cpp_pct)
 * 
 *     def getPctVarsToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":733
 *         return result
 * 
 *     def getPctVarsToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector, "PartialDecomposition.getPctVarsToBorderVector(self)\ngets fraction of variables assigned to the border for detectors in detectorchain\n\n        :return: vector of fractions of variables assigned to the border for detectors in detectorchain.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector = {"getPctVarsToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsToBorderVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctVarsToBorderVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctVarsToBorderVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsToBorderVector", 1);

  /* "src/pygcgopt/decomposition.pxi":738
 *         :return: vector of fractions of variables assigned to the border for detectors in detectorchain.
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsToBorderVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsToBorderVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 738, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":739
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsToBorderVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsToBlock(self, int detectorchainindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":733
 *         return result
 * 
 *     def getPctVarsToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":741
 *         return result
 * 
 *     def getPctVarsToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to a block for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock, "PartialDecomposition.getPctVarsToBlock(self, int detectorchainindex)\ngets fraction of variables assigned to a block for a detector\n\n        :return: fraction of variables assigned to a block for a detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock = {"getPctVarsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 741, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctVarsToBlock") < 0)) __PYX_ERR(2, 741, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 741, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctVarsToBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":746
 *         :return: fraction of variables assigned to a block for a detector
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctVarsToBlock(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":747
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsToBlock(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsToBlock(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 747, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":748
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsToBlock(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsToBlockVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":741
 *         return result
 * 
 *     def getPctVarsToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to a block for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":750
 *         return result
 * 
 *     def getPctVarsToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """returns fraction of variables assigned to a block for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector, "PartialDecomposition.getPctVarsToBlockVector(self)\nreturns fraction of variables assigned to a block for detectors in detectorchain\n\n        :return: vector of fractions of variables assigned to a block for detectors in detectorchain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector = {"getPctVarsToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsToBlockVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctVarsToBlockVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctVarsToBlockVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsToBlockVector", 1);

  /* "src/pygcgopt/decomposition.pxi":755
 *         :return: vector of fractions of variables assigned to a block for detectors in detectorchain
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsToBlockVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsToBlockVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 755, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":756
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsToBlockVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsFromFree(self, int detectorchainindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":750
 *         return result
 * 
 *     def getPctVarsToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """returns fraction of variables assigned to a block for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":758
 *         return result
 * 
 *     def getPctVarsFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """Gets fraction of variables that are not longer open for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree, "PartialDecomposition.getPctVarsFromFree(self, int detectorchainindex)\nGets fraction of variables that are not longer open for a detector\n\n        :return: index of the detector in the detectorchain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree = {"getPctVarsFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsFromFree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 758, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctVarsFromFree") < 0)) __PYX_ERR(2, 758, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 758, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctVarsFromFree", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 758, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsFromFree", 1);

  /* "src/pygcgopt/decomposition.pxi":763
 *         :return: index of the detector in the detectorchain
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctVarsFromFree(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":764
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsFromFree(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsFromFree(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 764, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":765
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctVarsFromFree(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctVarsFromFreeVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":758
 *         return result
 * 
 *     def getPctVarsFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """Gets fraction of variables that are not longer open for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":767
 *         return result
 * 
 *     def getPctVarsFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables that are not longer open for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector, "PartialDecomposition.getPctVarsFromFreeVector(self)\ngets fraction of variables that are not longer open for detectors in detectorchain\n\n        :return: vector or fractions of variables that are not longer open for detectors in detectorchain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector = {"getPctVarsFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctVarsFromFreeVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctVarsFromFreeVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctVarsFromFreeVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctVarsFromFreeVector", 1);

  /* "src/pygcgopt/decomposition.pxi":772
 *         :return: vector or fractions of variables that are not longer open for detectors in detectorchain
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsFromFreeVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctVarsFromFreeVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 772, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":773
 *         """
 *         cdef vector[double] result = self.thisptr.getPctVarsFromFreeVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssToBorder(self, int detectorchainindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":767
 *         return result
 * 
 *     def getPctVarsFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables that are not longer open for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctVarsFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":775
 *         return result
 * 
 *     def getPctConssToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder, "PartialDecomposition.getPctConssToBorder(self, int detectorchainindex)\ngets fraction of constraints assigned to the border for a detector\n\n        :return: returns fraction of constraints assigned to the border for a detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder = {"getPctConssToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssToBorder (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 775, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctConssToBorder") < 0)) __PYX_ERR(2, 775, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 775, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctConssToBorder", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 775, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssToBorder", 1);

  /* "src/pygcgopt/decomposition.pxi":780
 *         :return: returns fraction of constraints assigned to the border for a detector
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctConssToBorder(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":781
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssToBorder(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssToBorder(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 781, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":782
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssToBorder(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssToBorderVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":775
 *         return result
 * 
 *     def getPctConssToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBorder", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":784
 *         return result
 * 
 *     def getPctConssToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector, "PartialDecomposition.getPctConssToBorderVector(self)\ngets fraction of constraints assigned to the border for detectors in detectorchain\n\n        :return: vector of fractions of constraints assigned to the border for detectors in detectorchain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector = {"getPctConssToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssToBorderVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctConssToBorderVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctConssToBorderVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssToBorderVector", 1);

  /* "src/pygcgopt/decomposition.pxi":789
 *         :return: vector of fractions of constraints assigned to the border for detectors in detectorchain
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssToBorderVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssToBorderVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 789, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":790
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssToBorderVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssToBlock(self, int detectorchainindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":784
 *         return result
 * 
 *     def getPctConssToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":792
 *         return result
 * 
 *     def getPctConssToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock, "PartialDecomposition.getPctConssToBlock(self, int detectorchainindex)\ngets fraction of constraints assigned to a block for a detector\n\n        :return: fraction of constraints assigned to a block for a detector.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock = {"getPctConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssToBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 792, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctConssToBlock") < 0)) __PYX_ERR(2, 792, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 792, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctConssToBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 792, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssToBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":797
 *         :return: fraction of constraints assigned to a block for a detector.
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctConssToBlock(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":798
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssToBlock(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssToBlock(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 798, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":799
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssToBlock(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssToBlockVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":792
 *         return result
 * 
 *     def getPctConssToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":801
 *         return result
 * 
 *     def getPctConssToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector, "PartialDecomposition.getPctConssToBlockVector(self)\ngets fraction of constraints assigned to a block for detectors in detectorchain\n\n        :return: vector of fractions of constraints assigned to a block for detectors in detectorchain.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector = {"getPctConssToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssToBlockVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctConssToBlockVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctConssToBlockVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssToBlockVector", 1);

  /* "src/pygcgopt/decomposition.pxi":806
 *         :return: vector of fractions of constraints assigned to a block for detectors in detectorchain.
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssToBlockVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssToBlockVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 806, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":807
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssToBlockVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssFromFree(self, int detectorchainindex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":801
 *         return result
 * 
 *     def getPctConssToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":809
 *         return result
 * 
 *     def getPctConssFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree, "PartialDecomposition.getPctConssFromFree(self, int detectorchainindex)\ngets fraction of constraints that are not longer open for a detector\n\n        :return: fraction of constraints that are not longer open for a detector.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree = {"getPctConssFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssFromFree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPctConssFromFree") < 0)) __PYX_ERR(2, 809, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 809, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPctConssFromFree", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 809, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex) {
  int __pyx_v_cpp_detectorchainindex;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssFromFree", 1);

  /* "src/pygcgopt/decomposition.pxi":814
 *         :return: fraction of constraints that are not longer open for a detector.
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getPctConssFromFree(cpp_detectorchainindex)
 *         return result
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":815
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssFromFree(cpp_detectorchainindex)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssFromFree(__pyx_v_cpp_detectorchainindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 815, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":816
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef double result = self.thisptr.getPctConssFromFree(cpp_detectorchainindex)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getPctConssFromFreeVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":809
 *         return result
 * 
 *     def getPctConssFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssFromFree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":818
 *         return result
 * 
 *     def getPctConssFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for detectors in detectorchain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector, "PartialDecomposition.getPctConssFromFreeVector(self)\ngets fraction of constraints that are not longer open for detectors in detectorchain\n\n        :return: vector of fractions of constraints that are not longer open for detectors in detectorchain.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector = {"getPctConssFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPctConssFromFreeVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getPctConssFromFreeVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getPctConssFromFreeVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getPctConssFromFreeVector", 1);

  /* "src/pygcgopt/decomposition.pxi":823
 *         :return: vector of fractions of constraints that are not longer open for detectors in detectorchain.
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssFromFreeVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getPctConssFromFreeVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 823, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":824
 *         """
 *         cdef vector[double] result = self.thisptr.getPctConssFromFreeVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getScore(self, Score score):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":818
 *         return result
 * 
 *     def getPctConssFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for detectors in detectorchain
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getPctConssFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":826
 *         return result
 * 
 *     def getScore(self, Score score):             # <<<<<<<<<<<<<<
 *         """gets value of the score
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_155getScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_154getScore, "PartialDecomposition.getScore(self, Score score)\ngets value of the score\n\n        :param score: score for which the value should be returned\n        :return: value of score\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_155getScore = {"getScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_155getScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_154getScore};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_155getScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getScore (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_score,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_score)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 826, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getScore") < 0)) __PYX_ERR(2, 826, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_score = ((struct __pyx_obj_8pygcgopt_3gcg_Score *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getScore", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 826, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getScore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_score), __pyx_ptype_8pygcgopt_3gcg_Score, 1, "score", 0))) __PYX_ERR(2, 826, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_154getScore(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_score);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_154getScore(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  char const *__pyx_t_6;
  SCIP_Real __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getScore", 1);

  /* "src/pygcgopt/decomposition.pxi":832
 *         :return: value of score
 *         """
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion(score.scorename)))             # <<<<<<<<<<<<<<
 * 
 *     def calcStairlinkingVars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 832, __pyx_L1_error)
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_score->scorename};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(2, 832, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->getScore(GCGfindScore(__pyx_t_1->getScip(), __pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 832, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":826
 *         return result
 * 
 *     def getScore(self, Score score):             # <<<<<<<<<<<<<<
 *         """gets value of the score
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getScore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":834
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion(score.scorename)))
 * 
 *     def calcStairlinkingVars(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to stairlinkingvars if possible
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars, "PartialDecomposition.calcStairlinkingVars(self)\nreassigns linking variables to stairlinkingvars if possible\n\n        potentially reorders blocks for making a maximum number of linking vars stairlinking\n        if all vars that connect exactly two blocks have a staircase structure, all of them become stairlinkingvars\n        otherwise, the stairlinking assignment is done greedily\n        .. note:: precondition: partialdec does not have any stairlinking vars.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars = {"calcStairlinkingVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcStairlinkingVars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("calcStairlinkingVars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "calcStairlinkingVars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("calcStairlinkingVars", 1);

  /* "src/pygcgopt/decomposition.pxi":842
 *         .. note:: precondition: partialdec does not have any stairlinking vars.
 *         """
 *         self.thisptr.calcStairlinkingVars()             # <<<<<<<<<<<<<<
 * 
 *     def checkAllConssAssigned(self):
 */
  try {
    __pyx_v_self->thisptr->calcStairlinkingVars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 842, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":834
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion(score.scorename)))
 * 
 *     def calcStairlinkingVars(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to stairlinkingvars if possible
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.calcStairlinkingVars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":844
 *         self.thisptr.calcStairlinkingVars()
 * 
 *     def checkAllConssAssigned(self):             # <<<<<<<<<<<<<<
 *         """checks if all constraints are assigned and deletes the open constraint vector if so
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned, "PartialDecomposition.checkAllConssAssigned(self)\nchecks if all constraints are assigned and deletes the open constraint vector if so\n\n        :return: True iff all constraints are assigned\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned = {"checkAllConssAssigned", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("checkAllConssAssigned (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("checkAllConssAssigned", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "checkAllConssAssigned", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("checkAllConssAssigned", 1);

  /* "src/pygcgopt/decomposition.pxi":849
 *         :return: True iff all constraints are assigned
 *         """
 *         cdef bool result = self.thisptr.checkAllConssAssigned()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->checkAllConssAssigned();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 849, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":850
 *         """
 *         cdef bool result = self.thisptr.checkAllConssAssigned()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def checkConsistency(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":844
 *         self.thisptr.calcStairlinkingVars()
 * 
 *     def checkAllConssAssigned(self):             # <<<<<<<<<<<<<<
 *         """checks if all constraints are assigned and deletes the open constraint vector if so
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.checkAllConssAssigned", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":852
 *         return result
 * 
 *     def checkConsistency(self):             # <<<<<<<<<<<<<<
 *         """checks whether the assignments in the partialdec are consistent
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency, "PartialDecomposition.checkConsistency(self)\nchecks whether the assignments in the partialdec are consistent\n\n        The following checks are performed:\n        - check if nblocks is set appropriately\n        - check for empty (row- and col-wise) blocks\n        - every variable is assigned at most once\n        - check if all not assigned variables are open vars\n        - check if all open vars are not assigned\n        - every constraint is assigned at most once\n        - check if all not assigned constraints are open cons\n        - check if all open conss are not assigned\n        - check if the data structures are sorted\n        - check if variables hitting a cons are either in the cons's block or border or still open\n\n        :return: True iff the partialdec seems to be consistent\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency = {"checkConsistency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("checkConsistency (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("checkConsistency", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "checkConsistency", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("checkConsistency", 1);

  /* "src/pygcgopt/decomposition.pxi":869
 *         :return: True iff the partialdec seems to be consistent
 *         """
 *         cdef bool result = self.thisptr.checkConsistency()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->checkConsistency();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 869, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":870
 *         """
 *         cdef bool result = self.thisptr.checkConsistency()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def complete(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":852
 *         return result
 * 
 *     def checkConsistency(self):             # <<<<<<<<<<<<<<
 *         """checks whether the assignments in the partialdec are consistent
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.checkConsistency", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":872
 *         return result
 * 
 *     def complete(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables trivially
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_163complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_162complete, "PartialDecomposition.complete(self)\nassigns all open constraints and open variables trivially\n\n        strategy: assigns all open conss and vars to blocks if they can be refined there, otherwise to the master\n\n        :note: partialdecomps should usually be completed by a detector, only use this function if you know what you are doing\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_163complete = {"complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_163complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_162complete};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_163complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("complete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("complete", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "complete", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_162complete(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_162complete(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("complete", 1);

  /* "src/pygcgopt/decomposition.pxi":879
 *         :note: partialdecomps should usually be completed by a detector, only use this function if you know what you are doing
 *         """
 *         self.thisptr.complete()             # <<<<<<<<<<<<<<
 * 
 *     def sort(self):
 */
  try {
    __pyx_v_self->thisptr->complete();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 879, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":872
 *         return result
 * 
 *     def complete(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables trivially
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":881
 *         self.thisptr.complete()
 * 
 *     def sort(self):             # <<<<<<<<<<<<<<
 *         """sorts the variables and constraints data structures by their indices
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_165sort(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_164sort, "PartialDecomposition.sort(self)\nsorts the variables and constraints data structures by their indices\n\n        :return: True if the internal order of variables or constraints changed\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_165sort = {"sort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_165sort, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_164sort};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_165sort(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sort (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sort", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sort", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_164sort(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_164sort(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sort", 1);

  /* "src/pygcgopt/decomposition.pxi":886
 *         :return: True if the internal order of variables or constraints changed
 *         """
 *         cdef bool result = self.thisptr.sort()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->sort();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 886, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":887
 *         """
 *         cdef bool result = self.thisptr.sort()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def completeByConnected(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":881
 *         self.thisptr.complete()
 * 
 *     def sort(self):             # <<<<<<<<<<<<<<
 *         """sorts the variables and constraints data structures by their indices
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":889
 *         return result
 * 
 *     def completeByConnected(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected, "PartialDecomposition.completeByConnected(self)\nassigns all open constraints and open variables\n\n        strategy: assigns all constraints and variables to the same block if they are connected,\n        a constraint and a variable are adjacent if the variable appears in the constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected = {"completeByConnected", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("completeByConnected (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("completeByConnected", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "completeByConnected", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("completeByConnected", 1);

  /* "src/pygcgopt/decomposition.pxi":895
 *         a constraint and a variable are adjacent if the variable appears in the constraint
 *         """
 *         self.thisptr.completeByConnected()             # <<<<<<<<<<<<<<
 * 
 *     def completeByConnectedConssAdjacency(self):
 */
  try {
    __pyx_v_self->thisptr->completeByConnected();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 895, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":889
 *         return result
 * 
 *     def completeByConnected(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.completeByConnected", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":897
 *         self.thisptr.completeByConnected()
 * 
 *     def completeByConnectedConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency, "PartialDecomposition.completeByConnectedConssAdjacency(self)\nassigns all open constraints and open variables\n\n        strategy: assigns all constraints and variables to the same block if they are connected\n        a constraint and a variable are adjacent if the variable appears in the constraint\n        .. note:: this relies on the consadjacency structure of the detprobdata\n        hence it cannot be applied in presence of linking variables.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency = {"completeByConnectedConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("completeByConnectedConssAdjacency (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("completeByConnectedConssAdjacency", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "completeByConnectedConssAdjacency", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("completeByConnectedConssAdjacency", 1);

  /* "src/pygcgopt/decomposition.pxi":905
 *         hence it cannot be applied in presence of linking variables.
 *         """
 *         self.thisptr.completeByConnectedConssAdjacency()             # <<<<<<<<<<<<<<
 * 
 *     def completeGreedily(self):
 */
  try {
    __pyx_v_self->thisptr->completeByConnectedConssAdjacency();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 905, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":897
 *         self.thisptr.completeByConnected()
 * 
 *     def completeByConnectedConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.completeByConnectedConssAdjacency", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":907
 *         self.thisptr.completeByConnectedConssAdjacency()
 * 
 *     def completeGreedily(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily, "PartialDecomposition.completeGreedily(self)\nassigns all open constraints and open variables\n\n        strategy: assigns a constraint (and related variables) to a new block if possible,\n        if not to an existing block if possible (by means of prior var assignments)\n        and finally to master, if there does not exist such a block.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily = {"completeGreedily", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("completeGreedily (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("completeGreedily", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "completeGreedily", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("completeGreedily", 1);

  /* "src/pygcgopt/decomposition.pxi":914
 *         and finally to master, if there does not exist such a block.
 *         """
 *         self.thisptr.completeGreedily()             # <<<<<<<<<<<<<<
 * 
 *     def prepare(self):
 */
  try {
    __pyx_v_self->thisptr->completeGreedily();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 914, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":907
 *         self.thisptr.completeByConnectedConssAdjacency()
 * 
 *     def completeGreedily(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.completeGreedily", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":916
 *         self.thisptr.completeGreedily()
 * 
 *     def prepare(self):             # <<<<<<<<<<<<<<
 *         """sorts the partialdec and calculates a its implicit assignments, hashvalue and evaluation
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_173prepare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_172prepare, "PartialDecomposition.prepare(self)\nsorts the partialdec and calculates a its implicit assignments, hashvalue and evaluation\n        \n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_173prepare = {"prepare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_173prepare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_172prepare};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_173prepare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("prepare (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("prepare", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "prepare", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_172prepare(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_172prepare(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("prepare", 1);

  /* "src/pygcgopt/decomposition.pxi":920
 * 
 *         """
 *         self.thisptr.prepare()             # <<<<<<<<<<<<<<
 * 
 *     def getNDetectors(self):
 */
  try {
    __pyx_v_self->thisptr->prepare();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 920, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":916
 *         self.thisptr.completeGreedily()
 * 
 *     def prepare(self):             # <<<<<<<<<<<<<<
 *         """sorts the partialdec and calculates a its implicit assignments, hashvalue and evaluation
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":922
 *         self.thisptr.prepare()
 * 
 *     def getNDetectors(self):             # <<<<<<<<<<<<<<
 *         """gets the number of detectors the partialdec is propagated by
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors, "PartialDecomposition.getNDetectors(self)\ngets the number of detectors the partialdec is propagated by\n\n        :return: number of detectors the partialdec is propagated by\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors = {"getNDetectors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNDetectors (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNDetectors", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNDetectors", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNDetectors", 1);

  /* "src/pygcgopt/decomposition.pxi":927
 *         :return: number of detectors the partialdec is propagated by
 *         """
 *         cdef int result = self.thisptr.getNDetectors()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNDetectors();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 927, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":928
 *         """
 *         cdef int result = self.thisptr.getNDetectors()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNReps(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":922
 *         self.thisptr.prepare()
 * 
 *     def getNDetectors(self):             # <<<<<<<<<<<<<<
 *         """gets the number of detectors the partialdec is propagated by
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNDetectors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":930
 *         return result
 * 
 *     def getNReps(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blockrepresentatives
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_177getNReps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_176getNReps, "PartialDecomposition.getNReps(self)\ngets the number of blockrepresentatives\n\n        :return: the number of blockrepresentatives\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_177getNReps = {"getNReps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_177getNReps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_176getNReps};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_177getNReps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNReps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNReps", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNReps", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_176getNReps(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_176getNReps(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNReps", 1);

  /* "src/pygcgopt/decomposition.pxi":935
 *         :return: the number of blockrepresentatives
 *         """
 *         cdef int result = self.thisptr.getNReps()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNReps();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 935, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":936
 *         """
 *         cdef int result = self.thisptr.getNReps()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNCoeffsForMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":930
 *         return result
 * 
 *     def getNReps(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blockrepresentatives
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNReps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":938
 *         return result
 * 
 *     def getNCoeffsForMaster(self):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coefficients in master
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster, "PartialDecomposition.getNCoeffsForMaster(self)\ngets number of nonzero coefficients in master\n\n        :return: number of nonzero coefficients in master\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster = {"getNCoeffsForMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNCoeffsForMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNCoeffsForMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNCoeffsForMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNCoeffsForMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":943
 *         :return: number of nonzero coefficients in master
 *         """
 *         cdef int result = self.thisptr.getNCoeffsForMaster()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNCoeffsForMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 943, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":944
 *         """
 *         cdef int result = self.thisptr.getNCoeffsForMaster()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def setNBlocks(self, int nblocks):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":938
 *         return result
 * 
 *     def getNCoeffsForMaster(self):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coefficients in master
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNCoeffsForMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":946
 *         return result
 * 
 *     def setNBlocks(self, int nblocks):             # <<<<<<<<<<<<<<
 *         """sets number of blocks, only increasing number allowed
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks, "PartialDecomposition.setNBlocks(self, int nblocks)\nsets number of blocks, only increasing number allowed\n\n        :param nblocks: new number of blocks\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks = {"setNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_nblocks;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setNBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nblocks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nblocks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 946, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setNBlocks") < 0)) __PYX_ERR(2, 946, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_nblocks = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_nblocks == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 946, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setNBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 946, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_nblocks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_nblocks) {
  int __pyx_v_cpp_nblocks;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setNBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":951
 *         :param nblocks: new number of blocks
 *         """
 *         cdef int cpp_nblocks = nblocks             # <<<<<<<<<<<<<<
 *         self.thisptr.setNBlocks(cpp_nblocks)
 * 
 */
  __pyx_v_cpp_nblocks = __pyx_v_nblocks;

  /* "src/pygcgopt/decomposition.pxi":952
 *         """
 *         cdef int cpp_nblocks = nblocks
 *         self.thisptr.setNBlocks(cpp_nblocks)             # <<<<<<<<<<<<<<
 * 
 *     def getNTotalStairlinkingvars(self):
 */
  try {
    __pyx_v_self->thisptr->setNBlocks(__pyx_v_cpp_nblocks);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 952, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":946
 *         return result
 * 
 *     def setNBlocks(self, int nblocks):             # <<<<<<<<<<<<<<
 *         """sets number of blocks, only increasing number allowed
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":954
 *         self.thisptr.setNBlocks(cpp_nblocks)
 * 
 *     def getNTotalStairlinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets total number of stairlinking variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars, "PartialDecomposition.getNTotalStairlinkingvars(self)\ngets total number of stairlinking variables\n\n        :return: total number of stairlinking variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars = {"getNTotalStairlinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNTotalStairlinkingvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNTotalStairlinkingvars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNTotalStairlinkingvars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNTotalStairlinkingvars", 1);

  /* "src/pygcgopt/decomposition.pxi":959
 *         :return: total number of stairlinking variables
 *         """
 *         cdef int result = self.thisptr.getNTotalStairlinkingvars()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNTotalStairlinkingvars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 959, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":960
 *         """
 *         cdef int result = self.thisptr.getNTotalStairlinkingvars()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNVarsForBlocks(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":954
 *         self.thisptr.setNBlocks(cpp_nblocks)
 * 
 *     def getNTotalStairlinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets total number of stairlinking variables
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNTotalStairlinkingvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":962
 *         return result
 * 
 *     def getNVarsForBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets overall number of variables assigned to a block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks, "PartialDecomposition.getNVarsForBlocks(self)\ngets overall number of variables assigned to a block\n\n        :return: number of variables that are assigned to any block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks = {"getNVarsForBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarsForBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVarsForBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVarsForBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNVarsForBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":967
 *         :return: number of variables that are assigned to any block
 *         """
 *         cdef int result = self.thisptr.getNVarsForBlocks()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNVarsForBlocks();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 967, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":968
 *         """
 *         cdef int result = self.thisptr.getNVarsForBlocks()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def findVarsLinkingToMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":962
 *         return result
 * 
 *     def getNVarsForBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets overall number of variables assigned to a block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNVarsForBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":970
 *         return result
 * 
 *     def findVarsLinkingToMaster(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to master if appropriate
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster, "PartialDecomposition.findVarsLinkingToMaster(self)\nreassigns linking variables to master if appropriate\n\n        Variables are reassigned as master if the variable only hits master conss\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster = {"findVarsLinkingToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("findVarsLinkingToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("findVarsLinkingToMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "findVarsLinkingToMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("findVarsLinkingToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":975
 *         Variables are reassigned as master if the variable only hits master conss
 *         """
 *         self.thisptr.findVarsLinkingToMaster()             # <<<<<<<<<<<<<<
 * 
 *     def findVarsLinkingToStairlinking(self):
 */
  try {
    __pyx_v_self->thisptr->findVarsLinkingToMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 975, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":970
 *         return result
 * 
 *     def findVarsLinkingToMaster(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to master if appropriate
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.findVarsLinkingToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":977
 *         self.thisptr.findVarsLinkingToMaster()
 * 
 *     def findVarsLinkingToStairlinking(self):             # <<<<<<<<<<<<<<
 *         """reassigns variables classified as linking to stairlinking if appropriate
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking, "PartialDecomposition.findVarsLinkingToStairlinking(self)\nreassigns variables classified as linking to stairlinking if appropriate\n\n        Variables are reassigned as master if the variable hits conss in exactly two consecutive blocks\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking = {"findVarsLinkingToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("findVarsLinkingToStairlinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("findVarsLinkingToStairlinking", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "findVarsLinkingToStairlinking", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("findVarsLinkingToStairlinking", 1);

  /* "src/pygcgopt/decomposition.pxi":982
 *         Variables are reassigned as master if the variable hits conss in exactly two consecutive blocks
 *         """
 *         self.thisptr.findVarsLinkingToStairlinking()             # <<<<<<<<<<<<<<
 * 
 *     def getNCoeffsForBlock(self, int block_id):
 */
  try {
    __pyx_v_self->thisptr->findVarsLinkingToStairlinking();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 982, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":977
 *         self.thisptr.findVarsLinkingToMaster()
 * 
 *     def findVarsLinkingToStairlinking(self):             # <<<<<<<<<<<<<<
 *         """reassigns variables classified as linking to stairlinking if appropriate
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.findVarsLinkingToStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":984
 *         self.thisptr.findVarsLinkingToStairlinking()
 * 
 *     def getNCoeffsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coeffs in a certain block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock, "PartialDecomposition.getNCoeffsForBlock(self, int block_id)\ngets number of nonzero coeffs in a certain block\n\n        :param block_id: of the block the number of nozerors are requested for\n        :return: number of nonzero coeffs in a certain block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock = {"getNCoeffsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNCoeffsForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 984, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNCoeffsForBlock") < 0)) __PYX_ERR(2, 984, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 984, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNCoeffsForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 984, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNCoeffsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  int __pyx_v_cpp_block_id;
  int __pyx_v_result;
  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("getNCoeffsForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":990
 *         :return: number of nonzero coeffs in a certain block
 *         """
 *         cdef int cpp_block_id = block_id             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getNCoeffsForBlock(cpp_block_id)
 *         return result
 */
  __pyx_v_cpp_block_id = __pyx_v_block_id;

  /* "src/pygcgopt/decomposition.pxi":991
 *         """
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getNCoeffsForBlock(cpp_block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNCoeffsForBlock(__pyx_v_cpp_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 991, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":992
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getNCoeffsForBlock(cpp_block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def addNNewBlocks(self, int nnewblocks):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":984
 *         self.thisptr.findVarsLinkingToStairlinking()
 * 
 *     def getNCoeffsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coeffs in a certain block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNCoeffsForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":994
 *         return result
 * 
 *     def addNNewBlocks(self, int nnewblocks):             # <<<<<<<<<<<<<<
 *         """adds how many new blocks were introduced
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks, "PartialDecomposition.addNNewBlocks(self, int nnewblocks)\nadds how many new blocks were introduced\n\n        bookkeeping information: adds number of new blocks created by a detector added to detector chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks = {"addNNewBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_nnewblocks;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addNNewBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nnewblocks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nnewblocks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 994, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addNNewBlocks") < 0)) __PYX_ERR(2, 994, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_nnewblocks = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_nnewblocks == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 994, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addNNewBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 994, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addNNewBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_nnewblocks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_nnewblocks) {
  int __pyx_v_cpp_nnewblocks;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addNNewBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":999
 *         bookkeeping information: adds number of new blocks created by a detector added to detector chain
 *         """
 *         cdef int cpp_nnewblocks = nnewblocks             # <<<<<<<<<<<<<<
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)
 * 
 */
  __pyx_v_cpp_nnewblocks = __pyx_v_nnewblocks;

  /* "src/pygcgopt/decomposition.pxi":1000
 *         """
 *         cdef int cpp_nnewblocks = nnewblocks
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)             # <<<<<<<<<<<<<<
 * 
 *     def getNConssForBlock(self, int block_id):
 */
  try {
    __pyx_v_self->thisptr->addNNewBlocks(__pyx_v_cpp_nnewblocks);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1000, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":994
 *         return result
 * 
 *     def addNNewBlocks(self, int nnewblocks):             # <<<<<<<<<<<<<<
 *         """adds how many new blocks were introduced
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addNNewBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1002
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)
 * 
 *     def getNConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets size of the vector containing constraints assigned to a block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock, "PartialDecomposition.getNConssForBlock(self, int block_id)\ngets size of the vector containing constraints assigned to a block\n\n        :param block_id: id of the block the number of constraints is asked for\n        :return: size of the vector containing constraints assigned to a block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock = {"getNConssForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConssForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1002, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNConssForBlock") < 0)) __PYX_ERR(2, 1002, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1002, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNConssForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1002, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNConssForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  int __pyx_v_cpp_block_id;
  int __pyx_v_result;
  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("getNConssForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":1008
 *         :return: size of the vector containing constraints assigned to a block
 *         """
 *         cdef int cpp_block_id = block_id             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getNConssForBlock(cpp_block_id)
 *         return result
 */
  __pyx_v_cpp_block_id = __pyx_v_block_id;

  /* "src/pygcgopt/decomposition.pxi":1009
 *         """
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getNConssForBlock(cpp_block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNConssForBlock(__pyx_v_cpp_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1009, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1010
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getNConssForBlock(cpp_block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def removeMastercons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1002
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)
 * 
 *     def getNConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets size of the vector containing constraints assigned to a block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNConssForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1012
 *         return result
 * 
 *     def removeMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """removes the given constraint from master
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons, "PartialDecomposition.removeMastercons(self, Constraint cons)\nremoves the given constraint from master\n\n        :param cons: constraint to be removed from master\n        :type cons: scip#Constraint\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons = {"removeMastercons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("removeMastercons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1012, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "removeMastercons") < 0)) __PYX_ERR(2, 1012, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("removeMastercons", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1012, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.removeMastercons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(2, 1012, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  gcg::DETPROBDATA *__pyx_v_det_prob_data;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("removeMastercons", 1);

  /* "src/pygcgopt/decomposition.pxi":1018
 *         :type cons: scip#Constraint
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()             # <<<<<<<<<<<<<<
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetprobdata();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1018, __pyx_L1_error)
  }
  __pyx_v_det_prob_data = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1019
 *         """
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))             # <<<<<<<<<<<<<<
 * 
 *     def isAssignedToOrigProb(self):
 */
  try {
    __pyx_t_2 = __pyx_v_det_prob_data->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1019, __pyx_L1_error)
  }
  try {
    __pyx_v_self->thisptr->removeMastercons(__pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1019, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1012
 *         return result
 * 
 *     def removeMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """removes the given constraint from master
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.removeMastercons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1021
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """gets whether the partialdec is from the presolved problem
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb, "PartialDecomposition.isAssignedToOrigProb(self)\ngets whether the partialdec is from the presolved problem\n\n        :return: True iff the partialdec is from the presolved problem\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb = {"isAssignedToOrigProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isAssignedToOrigProb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("isAssignedToOrigProb", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isAssignedToOrigProb", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isAssignedToOrigProb", 1);

  /* "src/pygcgopt/decomposition.pxi":1026
 *         :return: True iff the partialdec is from the presolved problem
 *         """
 *         cdef bool result = self.thisptr.isAssignedToOrigProb()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isAssignedToOrigProb();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1026, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1027
 *         """
 *         cdef bool result = self.thisptr.isAssignedToOrigProb()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def refineToBlocks(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1021
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """gets whether the partialdec is from the presolved problem
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.isAssignedToOrigProb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1029
 *         return result
 * 
 *     def refineToBlocks(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on blocks
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks, "PartialDecomposition.refineToBlocks(self)\nrefine partialdec with focus on blocks\n\n        strategy: assigns open conss and vars if they can be found in blocks\n        (without respect to open vars and conss  see assignHittingOpenconss(), see assignHittingOpenvars())\n        .. note:: partialdec might be not complete.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks = {"refineToBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("refineToBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("refineToBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "refineToBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("refineToBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":1036
 *         .. note:: partialdec might be not complete.
 *         """
 *         self.thisptr.refineToBlocks()             # <<<<<<<<<<<<<<
 * 
 *     def refineToMaster(self):
 */
  try {
    __pyx_v_self->thisptr->refineToBlocks();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1036, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1029
 *         return result
 * 
 *     def refineToBlocks(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on blocks
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.refineToBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1038
 *         self.thisptr.refineToBlocks()
 * 
 *     def refineToMaster(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on master
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster, "PartialDecomposition.refineToMaster(self)\nrefine partialdec with focus on master\n\n        strategy: do obvious ( see considerImplicits()) assignments and\n        assign other conss and vars to master if possible (see assignOpenPartialHittingToMaster())\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster = {"refineToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("refineToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("refineToMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "refineToMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("refineToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":1044
 *         assign other conss and vars to master if possible (see assignOpenPartialHittingToMaster())
 *         """
 *         self.thisptr.refineToMaster()             # <<<<<<<<<<<<<<
 * 
 *     def alreadyAssignedConssToBlocks(self):
 */
  try {
    __pyx_v_self->thisptr->refineToMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1044, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1038
 *         self.thisptr.refineToBlocks()
 * 
 *     def refineToMaster(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on master
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.refineToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1046
 *         self.thisptr.refineToMaster()
 * 
 *     def alreadyAssignedConssToBlocks(self):             # <<<<<<<<<<<<<<
 *         """checks if at least one constraint is assigned to some block
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks, "PartialDecomposition.alreadyAssignedConssToBlocks(self)\nchecks if at least one constraint is assigned to some block\n\n        :return: True iff at least one constraint is assigned to a block\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks = {"alreadyAssignedConssToBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("alreadyAssignedConssToBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("alreadyAssignedConssToBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "alreadyAssignedConssToBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("alreadyAssignedConssToBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":1051
 *         :return: True iff at least one constraint is assigned to a block
 *         """
 *         cdef bool result = self.thisptr.alreadyAssignedConssToBlocks()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->alreadyAssignedConssToBlocks();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1051, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1052
 *         """
 *         cdef bool result = self.thisptr.alreadyAssignedConssToBlocks()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def assignCurrentStairlinking(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1046
 *         self.thisptr.refineToMaster()
 * 
 *     def alreadyAssignedConssToBlocks(self):             # <<<<<<<<<<<<<<
 *         """checks if at least one constraint is assigned to some block
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.alreadyAssignedConssToBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1054
 *         return result
 * 
 *     def assignCurrentStairlinking(self):             # <<<<<<<<<<<<<<
 *         """assigns open variables to stairlinking if appropriate
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking, "PartialDecomposition.assignCurrentStairlinking(self)\nassigns open variables to stairlinking if appropriate\n\n        assigns open variables to stairlinking if they can be found in exactly two consecutive blocks\n\n        :return: True iff at least one stairlinkingvariable was assigned\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking = {"assignCurrentStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("assignCurrentStairlinking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("assignCurrentStairlinking", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "assignCurrentStairlinking", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("assignCurrentStairlinking", 1);

  /* "src/pygcgopt/decomposition.pxi":1061
 *         :return: True iff at least one stairlinkingvariable was assigned
 *         """
 *         cdef bool result = self.thisptr.assignCurrentStairlinking()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->assignCurrentStairlinking();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1061, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1062
 *         """
 *         cdef bool result = self.thisptr.assignCurrentStairlinking()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def aggInfoCalculated(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1054
 *         return result
 * 
 *     def assignCurrentStairlinking(self):             # <<<<<<<<<<<<<<
 *         """assigns open variables to stairlinking if appropriate
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.assignCurrentStairlinking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1064
 *         return result
 * 
 *     def aggInfoCalculated(self):             # <<<<<<<<<<<<<<
 *         """checks if the aggregation information was already calculated
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated, "PartialDecomposition.aggInfoCalculated(self)\nchecks if the aggregation information was already calculated\n\n        :return: True iff the aggregation information was already calculated\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated = {"aggInfoCalculated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("aggInfoCalculated (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("aggInfoCalculated", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "aggInfoCalculated", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("aggInfoCalculated", 1);

  /* "src/pygcgopt/decomposition.pxi":1069
 *         :return: True iff the aggregation information was already calculated
 *         """
 *         cdef bool result = self.thisptr.aggInfoCalculated()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->aggInfoCalculated();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1069, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1070
 *         """
 *         cdef bool result = self.thisptr.aggInfoCalculated()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def considerImplicits(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1064
 *         return result
 * 
 *     def aggInfoCalculated(self):             # <<<<<<<<<<<<<<
 *         """checks if the aggregation information was already calculated
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.aggInfoCalculated", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1072
 *         return result
 * 
 *     def considerImplicits(self):             # <<<<<<<<<<<<<<
 *         """assigns every open constraint/variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits, "PartialDecomposition.considerImplicits(self)\nassigns every open constraint/variable\n\n        Assignments happen as follows:\n        - to the respective block if it hits exactly one blockvariable/blockconstraint and no open variables/constraints\n        - to master/linking if it hits blockvariables/blockconstraints assigned to different blocks\n        - and every constraint to master that hits a master variable\n        - and every variable to master if it does not hit any blockconstraint and has no open constraint\n        - leave the constraitn/variable open if nothing from the above holds\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits = {"considerImplicits", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("considerImplicits (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("considerImplicits", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "considerImplicits", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("considerImplicits", 1);

  /* "src/pygcgopt/decomposition.pxi":1082
 *         - leave the constraitn/variable open if nothing from the above holds
 *         """
 *         self.thisptr.considerImplicits()             # <<<<<<<<<<<<<<
 * 
 *     def displayInfo(self, int detailLevel):
 */
  try {
    __pyx_v_self->thisptr->considerImplicits();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1082, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1072
 *         return result
 * 
 *     def considerImplicits(self):             # <<<<<<<<<<<<<<
 *         """assigns every open constraint/variable
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.considerImplicits", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1084
 *         self.thisptr.considerImplicits()
 * 
 *     def displayInfo(self, int detailLevel):             # <<<<<<<<<<<<<<
 *         """displays the relevant information of the partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo, "PartialDecomposition.displayInfo(self, int detailLevel)\ndisplays the relevant information of the partialdec\n\n        :param detailLevel: pass a value that indicates how detailed the output should be:\n        0: brief overview\n        1: block and detector info\n        2: cons and var assignments\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo = {"displayInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detailLevel;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("displayInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detailLevel,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detailLevel)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1084, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "displayInfo") < 0)) __PYX_ERR(2, 1084, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detailLevel = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detailLevel == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1084, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("displayInfo", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1084, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.displayInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detailLevel);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detailLevel) {
  int __pyx_v_cpp_detailLevel;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("displayInfo", 1);

  /* "src/pygcgopt/decomposition.pxi":1092
 *         2: cons and var assignments
 *         """
 *         cdef int cpp_detailLevel = detailLevel             # <<<<<<<<<<<<<<
 *         self.thisptr.displayInfo(cpp_detailLevel)
 * 
 */
  __pyx_v_cpp_detailLevel = __pyx_v_detailLevel;

  /* "src/pygcgopt/decomposition.pxi":1093
 *         """
 *         cdef int cpp_detailLevel = detailLevel
 *         self.thisptr.displayInfo(cpp_detailLevel)             # <<<<<<<<<<<<<<
 * 
 *     def getAncestorList(self):
 */
  try {
    __pyx_v_self->thisptr->displayInfo(__pyx_v_cpp_detailLevel);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1093, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1084
 *         self.thisptr.considerImplicits()
 * 
 *     def displayInfo(self, int detailLevel):             # <<<<<<<<<<<<<<
 *         """displays the relevant information of the partialdec
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.displayInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1095
 *         self.thisptr.displayInfo(cpp_detailLevel)
 * 
 *     def getAncestorList(self):             # <<<<<<<<<<<<<<
 *         """gets ancestor ids as vector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList, "PartialDecomposition.getAncestorList(self)\ngets ancestor ids as vector\n\n        :return: list of ids of all ancestors id\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList = {"getAncestorList", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAncestorList (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getAncestorList", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getAncestorList", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getAncestorList", 1);

  /* "src/pygcgopt/decomposition.pxi":1100
 *         :return: list of ids of all ancestors id
 *         """
 *         cdef vector[int] result = self.thisptr.getAncestorList()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getAncestorList();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1100, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1101
 *         """
 *         cdef vector[int] result = self.thisptr.getAncestorList()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def assignSmallestComponentsButOneConssAdjacency(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1095
 *         self.thisptr.displayInfo(cpp_detailLevel)
 * 
 *     def getAncestorList(self):             # <<<<<<<<<<<<<<
 *         """gets ancestor ids as vector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getAncestorList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1103
 *         return result
 * 
 *     def assignSmallestComponentsButOneConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """computes components by connectedness of constraints and variables
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency, "PartialDecomposition.assignSmallestComponentsButOneConssAdjacency(self)\ncomputes components by connectedness of constraints and variables\n\n        computes components corresponding to connectedness of constraints and variables\n        and assigns them accordingly (all but one of largest components)\n\n        strategy: assigns all conss same block if they are connected\n        two constraints are adjacent if there is a common variable\n\n        .. note:: this relies on the consadjacency structure of the detprobdata\n        hence it cannot be applied in presence of linking variables.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency = {"assignSmallestComponentsButOneConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("assignSmallestComponentsButOneConssAdjacency (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("assignSmallestComponentsButOneConssAdjacency", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "assignSmallestComponentsButOneConssAdjacency", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("assignSmallestComponentsButOneConssAdjacency", 1);

  /* "src/pygcgopt/decomposition.pxi":1115
 *         hence it cannot be applied in presence of linking variables.
 *         """
 *         self.thisptr.assignSmallestComponentsButOneConssAdjacency()             # <<<<<<<<<<<<<<
 * 
 *     def deleteEmptyBlocks(self, bool variables):
 */
  try {
    __pyx_v_self->thisptr->assignSmallestComponentsButOneConssAdjacency();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1115, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1103
 *         return result
 * 
 *     def assignSmallestComponentsButOneConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """computes components by connectedness of constraints and variables
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.assignSmallestComponentsButOneConssAdjacency", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1117
 *         self.thisptr.assignSmallestComponentsButOneConssAdjacency()
 * 
 *     def deleteEmptyBlocks(self, bool variables):             # <<<<<<<<<<<<<<
 *         """deletes empty blocks and sets nblocks accordingly
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks, "PartialDecomposition.deleteEmptyBlocks(self, bool variables)\ndeletes empty blocks and sets nblocks accordingly\n\n        A block is considered to be empty if no constraint is assigned to it,\n        variables in blocks with no constraints become open\n\n        :param variables: if True, then blocks with no constraints but at least one variable are considered to be nonempty\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks = {"deleteEmptyBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  bool __pyx_v_variables;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("deleteEmptyBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_variables,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_variables)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1117, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "deleteEmptyBlocks") < 0)) __PYX_ERR(2, 1117, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_variables = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_variables == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1117, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("deleteEmptyBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1117, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteEmptyBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_variables);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_variables) {
  bool __pyx_v_cpp_variables;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deleteEmptyBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":1125
 *         :param variables: if True, then blocks with no constraints but at least one variable are considered to be nonempty
 *         """
 *         cdef bool cpp_variables = variables             # <<<<<<<<<<<<<<
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)
 * 
 */
  __pyx_v_cpp_variables = __pyx_v_variables;

  /* "src/pygcgopt/decomposition.pxi":1126
 *         """
 *         cdef bool cpp_variables = variables
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)             # <<<<<<<<<<<<<<
 * 
 *     def getTranslatedpartialdecid(self):
 */
  try {
    __pyx_v_self->thisptr->deleteEmptyBlocks(__pyx_v_cpp_variables);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1126, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1117
 *         self.thisptr.assignSmallestComponentsButOneConssAdjacency()
 * 
 *     def deleteEmptyBlocks(self, bool variables):             # <<<<<<<<<<<<<<
 *         """deletes empty blocks and sets nblocks accordingly
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.deleteEmptyBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1128
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)
 * 
 *     def getTranslatedpartialdecid(self):             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()
 *         return result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid, "PartialDecomposition.getTranslatedpartialdecid(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid = {"getTranslatedpartialdecid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getTranslatedpartialdecid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getTranslatedpartialdecid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getTranslatedpartialdecid", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getTranslatedpartialdecid", 1);

  /* "src/pygcgopt/decomposition.pxi":1129
 * 
 *     def getTranslatedpartialdecid(self):
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getTranslatedpartialdecid();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1129, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1130
 *     def getTranslatedpartialdecid(self):
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1128
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)
 * 
 *     def getTranslatedpartialdecid(self):             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()
 *         return result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getTranslatedpartialdecid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1132
 *         return result
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):             # <<<<<<<<<<<<<<
 *         cdef int cpp_dec_id = dec_id
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid, "PartialDecomposition.setTranslatedpartialdecid(self, int dec_id)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid = {"setTranslatedpartialdecid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_dec_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setTranslatedpartialdecid (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dec_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dec_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1132, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setTranslatedpartialdecid") < 0)) __PYX_ERR(2, 1132, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_dec_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_dec_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1132, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setTranslatedpartialdecid", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setTranslatedpartialdecid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_dec_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_dec_id) {
  int __pyx_v_cpp_dec_id;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setTranslatedpartialdecid", 1);

  /* "src/pygcgopt/decomposition.pxi":1133
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):
 *         cdef int cpp_dec_id = dec_id             # <<<<<<<<<<<<<<
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 * 
 */
  __pyx_v_cpp_dec_id = __pyx_v_dec_id;

  /* "src/pygcgopt/decomposition.pxi":1134
 *     def setTranslatedpartialdecid(self, int dec_id):
 *         cdef int cpp_dec_id = dec_id
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)             # <<<<<<<<<<<<<<
 * 
 *     def buildDecChainString(self, buffer):
 */
  try {
    __pyx_v_self->thisptr->setTranslatedpartialdecid(__pyx_v_cpp_dec_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1134, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1132
 *         return result
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):             # <<<<<<<<<<<<<<
 *         cdef int cpp_dec_id = dec_id
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setTranslatedpartialdecid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1136
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 * 
 *     def buildDecChainString(self, buffer):             # <<<<<<<<<<<<<<
 *         """creates a detector chain short string for this partialdec, is built from detector chain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString, "PartialDecomposition.buildDecChainString(self, buffer)\ncreates a detector chain short string for this partialdec, is built from detector chain\n\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString = {"buildDecChainString", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buffer = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("buildDecChainString (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buffer,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buffer)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1136, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "buildDecChainString") < 0)) __PYX_ERR(2, 1136, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buffer = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("buildDecChainString", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1136, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.buildDecChainString", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_buffer);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_buffer) {
  PyObject *__pyx_v_c_buffer = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("buildDecChainString", 1);

  /* "src/pygcgopt/decomposition.pxi":1140
 * 
 *         """
 *         c_buffer = str_conversion(buffer)             # <<<<<<<<<<<<<<
 *         self.thisptr.buildDecChainString(c_buffer)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_buffer};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_buffer = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/decomposition.pxi":1141
 *         """
 *         c_buffer = str_conversion(buffer)
 *         self.thisptr.buildDecChainString(c_buffer)             # <<<<<<<<<<<<<<
 * 
 *     def addDecChangesFromAncestor(self, PartialDecomposition ancestor):
 */
  __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_c_buffer); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(2, 1141, __pyx_L1_error)
  try {
    __pyx_v_self->thisptr->buildDecChainString(__pyx_t_5);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1141, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1136
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 * 
 *     def buildDecChainString(self, buffer):             # <<<<<<<<<<<<<<
 *         """creates a detector chain short string for this partialdec, is built from detector chain
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.buildDecChainString", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_buffer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1143
 *         self.thisptr.buildDecChainString(c_buffer)
 * 
 *     def addDecChangesFromAncestor(self, PartialDecomposition ancestor):             # <<<<<<<<<<<<<<
 *         """adds the statistical differences to an ancestor
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor, "PartialDecomposition.addDecChangesFromAncestor(self, PartialDecomposition ancestor)\nadds the statistical differences to an ancestor\n\n        incorporates the changes from ancestor partialdec into the statistical data structures\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor = {"addDecChangesFromAncestor", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_ancestor = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDecChangesFromAncestor (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ancestor,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ancestor)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1143, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addDecChangesFromAncestor") < 0)) __PYX_ERR(2, 1143, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ancestor = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addDecChangesFromAncestor", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1143, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addDecChangesFromAncestor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ancestor), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "ancestor", 0))) __PYX_ERR(2, 1143, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_ancestor);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_ancestor) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_ancestor;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addDecChangesFromAncestor", 1);

  /* "src/pygcgopt/decomposition.pxi":1148
 *         incorporates the changes from ancestor partialdec into the statistical data structures
 *         """
 *         cdef PARTIALDECOMP* cpp_ancestor = ancestor.thisptr             # <<<<<<<<<<<<<<
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)
 * 
 */
  __pyx_t_1 = __pyx_v_ancestor->thisptr;
  __pyx_v_cpp_ancestor = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1149
 *         """
 *         cdef PARTIALDECOMP* cpp_ancestor = ancestor.thisptr
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)             # <<<<<<<<<<<<<<
 * 
 *     def addDetectorChainInfo(PartialDecomposition self, decinfo):
 */
  try {
    __pyx_v_self->thisptr->addDecChangesFromAncestor(__pyx_v_cpp_ancestor);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1149, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1143
 *         self.thisptr.buildDecChainString(c_buffer)
 * 
 *     def addDecChangesFromAncestor(self, PartialDecomposition ancestor):             # <<<<<<<<<<<<<<
 *         """adds the statistical differences to an ancestor
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addDecChangesFromAncestor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1151
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)
 * 
 *     def addDetectorChainInfo(PartialDecomposition self, decinfo):             # <<<<<<<<<<<<<<
 *         """adds information about the detector chain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo, "PartialDecomposition.addDetectorChainInfo(self, decinfo)\nadds information about the detector chain\n\n        adds a detectorchain information string to the corresponding vector\n        (that carries information for each detector call)\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo = {"addDetectorChainInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_decinfo = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDetectorChainInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_decinfo,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decinfo)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1151, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addDetectorChainInfo") < 0)) __PYX_ERR(2, 1151, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_decinfo = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addDetectorChainInfo", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1151, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addDetectorChainInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_decinfo);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_decinfo) {
  PyObject *__pyx_v_c_decinfo = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addDetectorChainInfo", 1);

  /* "src/pygcgopt/decomposition.pxi":1157
 *         (that carries information for each detector call)
 *         """
 *         c_decinfo = str_conversion(decinfo)             # <<<<<<<<<<<<<<
 *         self.thisptr.addDetectorChainInfo(c_decinfo)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_decinfo};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_decinfo = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/decomposition.pxi":1158
 *         """
 *         c_decinfo = str_conversion(decinfo)
 *         self.thisptr.addDetectorChainInfo(c_decinfo)             # <<<<<<<<<<<<<<
 * 
 *     def getAncestorID(self, int ancestor_id):
 */
  __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_c_decinfo); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(2, 1158, __pyx_L1_error)
  try {
    __pyx_v_self->thisptr->addDetectorChainInfo(__pyx_t_5);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1158, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1151
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)
 * 
 *     def addDetectorChainInfo(PartialDecomposition self, decinfo):             # <<<<<<<<<<<<<<
 *         """adds information about the detector chain
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addDetectorChainInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_decinfo);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1160
 *         self.thisptr.addDetectorChainInfo(c_decinfo)
 * 
 *     def getAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """gets partialdec id of given ancestor id
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID, "PartialDecomposition.getAncestorID(self, int ancestor_id)\ngets partialdec id of given ancestor id\n\n        :return: partialdec id of given ancestor id\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID = {"getAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_ancestor_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAncestorID (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ancestor_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ancestor_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1160, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getAncestorID") < 0)) __PYX_ERR(2, 1160, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ancestor_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ancestor_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1160, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAncestorID", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_ancestor_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id) {
  int __pyx_v_cpp_ancestor_id;
  int __pyx_v_result;
  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("getAncestorID", 1);

  /* "src/pygcgopt/decomposition.pxi":1165
 *         :return: partialdec id of given ancestor id
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getAncestorID(cpp_ancestor_id)
 *         return result
 */
  __pyx_v_cpp_ancestor_id = __pyx_v_ancestor_id;

  /* "src/pygcgopt/decomposition.pxi":1166
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id
 *         cdef int result = self.thisptr.getAncestorID(cpp_ancestor_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getAncestorID(__pyx_v_cpp_ancestor_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1166, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1167
 *         cdef int cpp_ancestor_id = ancestor_id
 *         cdef int result = self.thisptr.getAncestorID(cpp_ancestor_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def copyPartitionStatistics(PartialDecomposition self, PartialDecomposition otherpartialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1160
 *         self.thisptr.addDetectorChainInfo(c_decinfo)
 * 
 *     def getAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """gets partialdec id of given ancestor id
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1169
 *         return result
 * 
 *     def copyPartitionStatistics(PartialDecomposition self, PartialDecomposition otherpartialdec):             # <<<<<<<<<<<<<<
 *         """copies the given partialdec's partition statistics
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics, "PartialDecomposition.copyPartitionStatistics(self, PartialDecomposition otherpartialdec)\ncopies the given partialdec's partition statistics\n\n        :param otherpartialdec: partialdec whose partition statistics are to be copied\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics = {"copyPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_otherpartialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copyPartitionStatistics (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_otherpartialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_otherpartialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1169, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "copyPartitionStatistics") < 0)) __PYX_ERR(2, 1169, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_otherpartialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("copyPartitionStatistics", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1169, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.copyPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_otherpartialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "otherpartialdec", 0))) __PYX_ERR(2, 1169, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_otherpartialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_otherpartialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_otherpartialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copyPartitionStatistics", 1);

  /* "src/pygcgopt/decomposition.pxi":1174
 *         :param otherpartialdec: partialdec whose partition statistics are to be copied
 *         """
 *         cdef PARTIALDECOMP* cpp_otherpartialdec = otherpartialdec.thisptr             # <<<<<<<<<<<<<<
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_otherpartialdec->thisptr;
  __pyx_v_cpp_otherpartialdec = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1175
 *         """
 *         cdef PARTIALDECOMP* cpp_otherpartialdec = otherpartialdec.thisptr
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)             # <<<<<<<<<<<<<<
 * 
 *     def removeAncestorID(PartialDecomposition self, int ancestor_id):
 */
  try {
    __pyx_v_self->thisptr->copyPartitionStatistics(__pyx_v_cpp_otherpartialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1175, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1169
 *         return result
 * 
 *     def copyPartitionStatistics(PartialDecomposition self, PartialDecomposition otherpartialdec):             # <<<<<<<<<<<<<<
 *         """copies the given partialdec's partition statistics
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.copyPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1177
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)
 * 
 *     def removeAncestorID(PartialDecomposition self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """removes ancestor id from list
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID, "PartialDecomposition.removeAncestorID(self, int ancestor_id)\nremoves ancestor id from list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID = {"removeAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_ancestor_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("removeAncestorID (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ancestor_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ancestor_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1177, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "removeAncestorID") < 0)) __PYX_ERR(2, 1177, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ancestor_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ancestor_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1177, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("removeAncestorID", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.removeAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_ancestor_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id) {
  int __pyx_v_cpp_ancestor_id;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("removeAncestorID", 1);

  /* "src/pygcgopt/decomposition.pxi":1180
 *         """removes ancestor id from list
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id             # <<<<<<<<<<<<<<
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)
 * 
 */
  __pyx_v_cpp_ancestor_id = __pyx_v_ancestor_id;

  /* "src/pygcgopt/decomposition.pxi":1181
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)             # <<<<<<<<<<<<<<
 * 
 *     def addAncestorID(self, int ancestor_id):
 */
  try {
    __pyx_v_self->thisptr->removeAncestorID(__pyx_v_cpp_ancestor_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1181, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1177
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)
 * 
 *     def removeAncestorID(PartialDecomposition self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """removes ancestor id from list
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.removeAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1183
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)
 * 
 *     def addAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """adds ancestor id to back of list
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID, "PartialDecomposition.addAncestorID(self, int ancestor_id)\nadds ancestor id to back of list\n\n        :param ancestor: id of ancestor that is to be added\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID = {"addAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_ancestor_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addAncestorID (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ancestor_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ancestor_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1183, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addAncestorID") < 0)) __PYX_ERR(2, 1183, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ancestor_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ancestor_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1183, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addAncestorID", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_ancestor_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_ancestor_id) {
  int __pyx_v_cpp_ancestor_id;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addAncestorID", 1);

  /* "src/pygcgopt/decomposition.pxi":1188
 *         :param ancestor: id of ancestor that is to be added
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id             # <<<<<<<<<<<<<<
 *         self.thisptr.addAncestorID(cpp_ancestor_id)
 * 
 */
  __pyx_v_cpp_ancestor_id = __pyx_v_ancestor_id;

  /* "src/pygcgopt/decomposition.pxi":1189
 *         """
 *         cdef int cpp_ancestor_id = ancestor_id
 *         self.thisptr.addAncestorID(cpp_ancestor_id)             # <<<<<<<<<<<<<<
 * 
 *     def getBlocksForRep(PartialDecomposition self, int rep_id):
 */
  try {
    __pyx_v_self->thisptr->addAncestorID(__pyx_v_cpp_ancestor_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1189, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1183
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)
 * 
 *     def addAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """adds ancestor id to back of list
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.addAncestorID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1191
 *         self.thisptr.addAncestorID(cpp_ancestor_id)
 * 
 *     def getBlocksForRep(PartialDecomposition self, int rep_id):             # <<<<<<<<<<<<<<
 *         """get a vector of block ids that are identical to block with id rep_id
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep, "PartialDecomposition.getBlocksForRep(self, int rep_id)\nget a vector of block ids that are identical to block with id rep_id\n\n        :param rep_id: id of the representative block\n        :return: vector of block ids that are identical to block with id rep_id\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep = {"getBlocksForRep", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rep_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getBlocksForRep (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rep_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rep_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1191, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getBlocksForRep") < 0)) __PYX_ERR(2, 1191, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rep_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rep_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1191, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getBlocksForRep", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getBlocksForRep", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_rep_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_rep_id) {
  int __pyx_v_cpp_rep_id;
  std::vector<int>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getBlocksForRep", 1);

  /* "src/pygcgopt/decomposition.pxi":1197
 *         :return: vector of block ids that are identical to block with id rep_id
 *         """
 *         cdef int cpp_rep_id = rep_id             # <<<<<<<<<<<<<<
 *         cdef vector[int] result = self.thisptr.getBlocksForRep(cpp_rep_id)
 *         return result
 */
  __pyx_v_cpp_rep_id = __pyx_v_rep_id;

  /* "src/pygcgopt/decomposition.pxi":1198
 *         """
 *         cdef int cpp_rep_id = rep_id
 *         cdef vector[int] result = self.thisptr.getBlocksForRep(cpp_rep_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getBlocksForRep(__pyx_v_cpp_rep_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1198, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1199
 *         cdef int cpp_rep_id = rep_id
 *         cdef vector[int] result = self.thisptr.getBlocksForRep(cpp_rep_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNNewBlocksVector(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1191
 *         self.thisptr.addAncestorID(cpp_ancestor_id)
 * 
 *     def getBlocksForRep(PartialDecomposition self, int rep_id):             # <<<<<<<<<<<<<<
 *         """get a vector of block ids that are identical to block with id rep_id
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getBlocksForRep", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1201
 *         return result
 * 
 *     def getNNewBlocksVector(self):             # <<<<<<<<<<<<<<
 *         """gets number of blocks the detectors in the detectorchain added
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector, "PartialDecomposition.getNNewBlocksVector(self)\ngets number of blocks the detectors in the detectorchain added\n\n        :return: number of blocks the detectors in the detectorchain added\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector = {"getNNewBlocksVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNNewBlocksVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNNewBlocksVector", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNNewBlocksVector", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<int>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getNNewBlocksVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1206
 *         :return: number of blocks the detectors in the detectorchain added
 *         """
 *         cdef vector[int] result = self.thisptr.getNNewBlocksVector()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNNewBlocksVector();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1206, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1207
 *         """
 *         cdef vector[int] result = self.thisptr.getNNewBlocksVector()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNAncestors(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1201
 *         return result
 * 
 *     def getNNewBlocksVector(self):             # <<<<<<<<<<<<<<
 *         """gets number of blocks the detectors in the detectorchain added
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNNewBlocksVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1209
 *         return result
 * 
 *     def getNAncestors(self):             # <<<<<<<<<<<<<<
 *         """gets number of ancestor partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors, "PartialDecomposition.getNAncestors(self)\ngets number of ancestor partialdecs\n\n        :return: number of ancestor partialdecs\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors = {"getNAncestors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNAncestors (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNAncestors", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNAncestors", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_v_result;
  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("getNAncestors", 1);

  /* "src/pygcgopt/decomposition.pxi":1214
 *         :return: number of ancestor partialdecs
 *         """
 *         cdef int result = self.thisptr.getNAncestors()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNAncestors();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1214, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1215
 *         """
 *         cdef int result = self.thisptr.getNAncestors()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getNNewBlocks(self, int detectorchain_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1209
 *         return result
 * 
 *     def getNAncestors(self):             # <<<<<<<<<<<<<<
 *         """gets number of ancestor partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNAncestors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1217
 *         return result
 * 
 *     def getNNewBlocks(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """gets number of blocks a detector added
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks, "PartialDecomposition.getNNewBlocks(self, int detectorchain_id)\ngets number of blocks a detector added\n\n        :return: number of blocks a detector added\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks = {"getNNewBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchain_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNNewBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchain_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchain_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1217, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNNewBlocks") < 0)) __PYX_ERR(2, 1217, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchain_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchain_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1217, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNNewBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1217, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNNewBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchain_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchain_id) {
  int __pyx_v_cpp_detectorchain_id;
  int __pyx_v_result;
  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("getNNewBlocks", 1);

  /* "src/pygcgopt/decomposition.pxi":1222
 *         :return: number of blocks a detector added
 *         """
 *         cdef int cpp_detectorchain_id = detectorchain_id             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getNNewBlocks(cpp_detectorchain_id)
 *         return result
 */
  __pyx_v_cpp_detectorchain_id = __pyx_v_detectorchain_id;

  /* "src/pygcgopt/decomposition.pxi":1223
 *         """
 *         cdef int cpp_detectorchain_id = detectorchain_id
 *         cdef int result = self.thisptr.getNNewBlocks(cpp_detectorchain_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNNewBlocks(__pyx_v_cpp_detectorchain_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1223, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1224
 *         cdef int cpp_detectorchain_id = detectorchain_id
 *         cdef int result = self.thisptr.getNNewBlocks(cpp_detectorchain_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getFinishedByFinisher(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1217
 *         return result
 * 
 *     def getNNewBlocks(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """gets number of blocks a detector added
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getNNewBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1226
 *         return result
 * 
 *     def getFinishedByFinisher(self):             # <<<<<<<<<<<<<<
 *         """returns True iff this partialdec was finished by finishPartialdec() method of a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher, "PartialDecomposition.getFinishedByFinisher(self)\nreturns True iff this partialdec was finished by finishPartialdec() method of a detector\n\n        :return: True iff this partialdec was finished by finishPartialdec() method of a detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher = {"getFinishedByFinisher", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getFinishedByFinisher (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getFinishedByFinisher", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getFinishedByFinisher", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  bool __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getFinishedByFinisher", 1);

  /* "src/pygcgopt/decomposition.pxi":1231
 *         :return: True iff this partialdec was finished by finishPartialdec() method of a detector
 *         """
 *         cdef bool result = self.thisptr.getFinishedByFinisher()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getFinishedByFinisher();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1231, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1232
 *         """
 *         cdef bool result = self.thisptr.getFinishedByFinisher()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getDetectorchainInfo(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1226
 *         return result
 * 
 *     def getFinishedByFinisher(self):             # <<<<<<<<<<<<<<
 *         """returns True iff this partialdec was finished by finishPartialdec() method of a detector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getFinishedByFinisher", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1234
 *         return result
 * 
 *     def getDetectorchainInfo(self):             # <<<<<<<<<<<<<<
 *         """gets the detectorchain info vector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo, "PartialDecomposition.getDetectorchainInfo(self)\ngets the detectorchain info vector\n\n        :return: detectorchain info vector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo = {"getDetectorchainInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetectorchainInfo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDetectorchainInfo", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDetectorchainInfo", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<std::string>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<std::string>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getDetectorchainInfo", 1);

  /* "src/pygcgopt/decomposition.pxi":1239
 *         :return: detectorchain info vector
 *         """
 *         cdef vector[string] result = self.thisptr.getDetectorchainInfo()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetectorchainInfo();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1239, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1240
 *         """
 *         cdef vector[string] result = self.thisptr.getDetectorchainInfo()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def shouldCompletedByConsToMaster(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_std_3a__3a_string(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1234
 *         return result
 * 
 *     def getDetectorchainInfo(self):             # <<<<<<<<<<<<<<
 *         """gets the detectorchain info vector
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getDetectorchainInfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1242
 *         return result
 * 
 *     def shouldCompletedByConsToMaster(self):             # <<<<<<<<<<<<<<
 *         """checks whether this partialdec is a userpartialdec that should be completed
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster, "PartialDecomposition.shouldCompletedByConsToMaster(self)\nchecks whether this partialdec is a userpartialdec that should be completed\n\n        the completion should be done by setting unspecified constraints to master\n        :return: True iff this partialdec is a userpartialdec that should be completed\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster = {"shouldCompletedByConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shouldCompletedByConsToMaster (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("shouldCompletedByConsToMaster", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "shouldCompletedByConsToMaster", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  unsigned int __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  unsigned int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shouldCompletedByConsToMaster", 1);

  /* "src/pygcgopt/decomposition.pxi":1248
 *         :return: True iff this partialdec is a userpartialdec that should be completed
 *         """
 *         cdef unsigned int result = self.thisptr.shouldCompletedByConsToMaster()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->shouldCompletedByConsToMaster();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1248, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1249
 *         """
 *         cdef unsigned int result = self.thisptr.shouldCompletedByConsToMaster()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def setFinishedByFinisher(self, bool finished):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1242
 *         return result
 * 
 *     def shouldCompletedByConsToMaster(self):             # <<<<<<<<<<<<<<
 *         """checks whether this partialdec is a userpartialdec that should be completed
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.shouldCompletedByConsToMaster", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1251
 *         return result
 * 
 *     def setFinishedByFinisher(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher, "PartialDecomposition.setFinishedByFinisher(self, bool finished)\nsets whether this partialdec was finished by a finishing detector\n\n        :param finished: is this partialdecs finished by a finishing detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher = {"setFinishedByFinisher", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  bool __pyx_v_finished;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setFinishedByFinisher (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_finished,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_finished)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1251, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setFinishedByFinisher") < 0)) __PYX_ERR(2, 1251, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_finished = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_finished == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1251, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setFinishedByFinisher", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1251, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setFinishedByFinisher", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_finished);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_finished) {
  bool __pyx_v_cpp_finished;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setFinishedByFinisher", 1);

  /* "src/pygcgopt/decomposition.pxi":1256
 *         :param finished: is this partialdecs finished by a finishing detector
 *         """
 *         cdef bool cpp_finished = finished             # <<<<<<<<<<<<<<
 *         self.thisptr.setFinishedByFinisher(cpp_finished)
 * 
 */
  __pyx_v_cpp_finished = __pyx_v_finished;

  /* "src/pygcgopt/decomposition.pxi":1257
 *         """
 *         cdef bool cpp_finished = finished
 *         self.thisptr.setFinishedByFinisher(cpp_finished)             # <<<<<<<<<<<<<<
 * 
 *     def calcAggregationInformation(self, bool ignoreDetectionLimits):
 */
  try {
    __pyx_v_self->thisptr->setFinishedByFinisher(__pyx_v_cpp_finished);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1257, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1251
 *         return result
 * 
 *     def setFinishedByFinisher(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setFinishedByFinisher", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1259
 *         self.thisptr.setFinishedByFinisher(cpp_finished)
 * 
 *     def calcAggregationInformation(self, bool ignoreDetectionLimits):             # <<<<<<<<<<<<<<
 *         """computes if aggregation of sub problems is possible
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation, "PartialDecomposition.calcAggregationInformation(self, bool ignoreDetectionLimits)\ncomputes if aggregation of sub problems is possible\n\n        checks if aggregation of sub problems is possible and stores the corresponding aggregation information\n\n        :param ignoreDetectionLimits: Set to True if computation should ignore detection limits\n\n        This parameter is ignored if the patched bliss version is not present.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation = {"calcAggregationInformation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  bool __pyx_v_ignoreDetectionLimits;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("calcAggregationInformation (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignoreDetectionLimits,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ignoreDetectionLimits)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1259, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "calcAggregationInformation") < 0)) __PYX_ERR(2, 1259, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ignoreDetectionLimits = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_ignoreDetectionLimits == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1259, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("calcAggregationInformation", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1259, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.calcAggregationInformation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_ignoreDetectionLimits);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_ignoreDetectionLimits) {
  bool __pyx_v_cpp_ignoreDetectionLimits;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("calcAggregationInformation", 1);

  /* "src/pygcgopt/decomposition.pxi":1268
 *         This parameter is ignored if the patched bliss version is not present.
 *         """
 *         cdef bool cpp_ignoreDetectionLimits = ignoreDetectionLimits             # <<<<<<<<<<<<<<
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)
 * 
 */
  __pyx_v_cpp_ignoreDetectionLimits = __pyx_v_ignoreDetectionLimits;

  /* "src/pygcgopt/decomposition.pxi":1269
 *         """
 *         cdef bool cpp_ignoreDetectionLimits = ignoreDetectionLimits
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorPropagated(self, Detector detector):
 */
  try {
    __pyx_v_self->thisptr->calcAggregationInformation(__pyx_v_cpp_ignoreDetectionLimits);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1269, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1259
 *         self.thisptr.setFinishedByFinisher(cpp_finished)
 * 
 *     def calcAggregationInformation(self, bool ignoreDetectionLimits):             # <<<<<<<<<<<<<<
 *         """computes if aggregation of sub problems is possible
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.calcAggregationInformation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1271
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)
 * 
 *     def setDetectorPropagated(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets partialdec to be propagated by a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated, "PartialDecomposition.setDetectorPropagated(self, Detector detector)\nsets partialdec to be propagated by a detector\n\n        :param detector: detector that is registered for this partialdec\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated = {"setDetectorPropagated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorPropagated (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1271, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorPropagated") < 0)) __PYX_ERR(2, 1271, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorPropagated", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1271, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorPropagated", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_detector), __pyx_ptype_8pygcgopt_3gcg_Detector, 1, "detector", 0))) __PYX_ERR(2, 1271, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detector);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector) {
  GCG_DETECTOR *__pyx_v_dec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorPropagated", 1);

  /* "src/pygcgopt/decomposition.pxi":1276
 *         :param detector: detector that is registered for this partialdec
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector             # <<<<<<<<<<<<<<
 *         self.thisptr.setDetectorPropagated(dec)
 * 
 */
  __pyx_v_dec = ((GCG_DETECTOR *)__pyx_v_detector);

  /* "src/pygcgopt/decomposition.pxi":1277
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector
 *         self.thisptr.setDetectorPropagated(dec)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorFinished(self, Detector detector):
 */
  try {
    __pyx_v_self->thisptr->setDetectorPropagated(__pyx_v_dec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1277, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1271
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)
 * 
 *     def setDetectorPropagated(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets partialdec to be propagated by a detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorPropagated", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1279
 *         self.thisptr.setDetectorPropagated(dec)
 * 
 *     def setDetectorFinished(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished, "PartialDecomposition.setDetectorFinished(self, Detector detector)\nsets detector that finished the partialdec\n\n        :param detector: detector that has finished this partialdecs\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished = {"setDetectorFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorFinished (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1279, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorFinished") < 0)) __PYX_ERR(2, 1279, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorFinished", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1279, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_detector), __pyx_ptype_8pygcgopt_3gcg_Detector, 1, "detector", 0))) __PYX_ERR(2, 1279, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detector);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector) {
  GCG_DETECTOR *__pyx_v_dec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorFinished", 1);

  /* "src/pygcgopt/decomposition.pxi":1284
 *         :param detector: detector that has finished this partialdecs
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector             # <<<<<<<<<<<<<<
 *         self.thisptr.setDetectorFinished(dec)
 * 
 */
  __pyx_v_dec = ((GCG_DETECTOR *)__pyx_v_detector);

  /* "src/pygcgopt/decomposition.pxi":1285
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector
 *         self.thisptr.setDetectorFinished(dec)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorFinishedOrig(self, Detector detector):
 */
  try {
    __pyx_v_self->thisptr->setDetectorFinished(__pyx_v_dec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1285, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1279
 *         self.thisptr.setDetectorPropagated(dec)
 * 
 *     def setDetectorFinished(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1287
 *         self.thisptr.setDetectorFinished(dec)
 * 
 *     def setDetectorFinishedOrig(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec in the original problem
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig, "PartialDecomposition.setDetectorFinishedOrig(self, Detector detector)\nsets detector that finished the partialdec in the original problem\n\n        :param detector: detector that has finished this partialdecs\n        :note: does not add the detector to the detectorchain and does not modify partition statistics\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig = {"setDetectorFinishedOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorFinishedOrig (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1287, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorFinishedOrig") < 0)) __PYX_ERR(2, 1287, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorFinishedOrig", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1287, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorFinishedOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_detector), __pyx_ptype_8pygcgopt_3gcg_Detector, 1, "detector", 0))) __PYX_ERR(2, 1287, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detector);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector) {
  GCG_DETECTOR *__pyx_v_dec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorFinishedOrig", 1);

  /* "src/pygcgopt/decomposition.pxi":1293
 *         :note: does not add the detector to the detectorchain and does not modify partition statistics
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector             # <<<<<<<<<<<<<<
 *         self.thisptr.setDetectorFinishedOrig(dec)
 * 
 */
  __pyx_v_dec = ((GCG_DETECTOR *)__pyx_v_detector);

  /* "src/pygcgopt/decomposition.pxi":1294
 *         """
 *         cdef GCG_DETECTOR* dec = <GCG_DETECTOR*>detector
 *         self.thisptr.setDetectorFinishedOrig(dec)             # <<<<<<<<<<<<<<
 * 
 *     def setPctConssToBlockVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setDetectorFinishedOrig(__pyx_v_dec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1294, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1287
 *         self.thisptr.setDetectorFinished(dec)
 * 
 *     def setDetectorFinishedOrig(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec in the original problem
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorFinishedOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1296
 *         self.thisptr.setDetectorFinishedOrig(dec)
 * 
 *     def setPctConssToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints set to blocks per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector, "PartialDecomposition.setPctConssToBlockVector(self, newvector)\nset statistical vector of fractions of constraints set to blocks per involved detector\n\n        :param newvector: vector of fractions of constraints set to blocks per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector = {"setPctConssToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctConssToBlockVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1296, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctConssToBlockVector") < 0)) __PYX_ERR(2, 1296, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctConssToBlockVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1296, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctConssToBlockVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1301
 *         :param newvector: vector of fractions of constraints set to blocks per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1301, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1302
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setPctConssFromFreeVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctConssToBlockVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1302, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1296
 *         self.thisptr.setDetectorFinishedOrig(dec)
 * 
 *     def setPctConssToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints set to blocks per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1304
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)
 * 
 *     def setPctConssFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints that are not longer open per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector, "PartialDecomposition.setPctConssFromFreeVector(self, newvector)\nset statistical vector of fractions of constraints that are not longer open per involved detector\n\n        :param newvector: vector of fractions of constraints that are not longer open per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector = {"setPctConssFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctConssFromFreeVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1304, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctConssFromFreeVector") < 0)) __PYX_ERR(2, 1304, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctConssFromFreeVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1304, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctConssFromFreeVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1309
 *         :param newvector: vector of fractions of constraints that are not longer open per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1309, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1310
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setPctConssToBorderVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctConssFromFreeVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1310, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1304
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)
 * 
 *     def setPctConssFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints that are not longer open per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1312
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)
 * 
 *     def setPctConssToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints assigned to the border per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector, "PartialDecomposition.setPctConssToBorderVector(self, newvector)\nset statistical vector of fractions of constraints assigned to the border per involved detector\n\n        :param newvector: vector of fractions of constraints assigned to the border per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector = {"setPctConssToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctConssToBorderVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1312, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctConssToBorderVector") < 0)) __PYX_ERR(2, 1312, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctConssToBorderVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1312, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctConssToBorderVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1317
 *         :param newvector: vector of fractions of constraints assigned to the border per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1317, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1318
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setPctVarsToBorderVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctConssToBorderVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1318, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1312
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)
 * 
 *     def setPctConssToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints assigned to the border per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctConssToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1320
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fraction of variables assigned to the border per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector, "PartialDecomposition.setPctVarsToBorderVector(self, newvector)\nset statistical vector of fraction of variables assigned to the border per involved detector\n\n        :param newvector: vector of fractions of variables assigned to the border per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector = {"setPctVarsToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctVarsToBorderVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1320, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctVarsToBorderVector") < 0)) __PYX_ERR(2, 1320, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctVarsToBorderVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1320, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctVarsToBorderVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1325
 *         :param newvector: vector of fractions of variables assigned to the border per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1325, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1326
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setPctVarsToBlockVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctVarsToBorderVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1326, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1320
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fraction of variables assigned to the border per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsToBorderVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1328
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of variables assigned to a block per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector, "PartialDecomposition.setPctVarsToBlockVector(self, newvector)\nset statistical vector of fractions of variables assigned to a block per involved detector\n\n        :param newvector: vector of fractions of variables assigned to a block per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector = {"setPctVarsToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctVarsToBlockVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1328, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctVarsToBlockVector") < 0)) __PYX_ERR(2, 1328, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctVarsToBlockVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1328, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctVarsToBlockVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1333
 *         :param newvector: vector of fractions of variables assigned to a block per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1333, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1334
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setPctVarsFromFreeVector(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctVarsToBlockVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1334, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1328
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of variables assigned to a block per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsToBlockVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1336
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)
 * 
 *     def setPctVarsFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of variables that are not longer open per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector, "PartialDecomposition.setPctVarsFromFreeVector(self, newvector)\nset statistical vector of variables that are not longer open per involved detector\n\n        :param newvector: vector of fractions of variables that are not longer open per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector = {"setPctVarsFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPctVarsFromFreeVector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1336, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPctVarsFromFreeVector") < 0)) __PYX_ERR(2, 1336, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPctVarsFromFreeVector", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1336, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPctVarsFromFreeVector", 1);

  /* "src/pygcgopt/decomposition.pxi":1341
 *         :param newvector: vector of fractions of variables that are not longer open per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1341, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1342
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorClockTimes(self, object newvector):
 */
  try {
    __pyx_v_self->thisptr->setPctVarsFromFreeVector(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1342, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1336
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)
 * 
 *     def setPctVarsFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of variables that are not longer open per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setPctVarsFromFreeVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1344
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)
 * 
 *     def setDetectorClockTimes(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of the times that the detectors needed for detecting per involved detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes, "PartialDecomposition.setDetectorClockTimes(self, newvector)\nset statistical vector of the times that the detectors needed for detecting per involved detector\n\n        :param newvector: vector of the times that the detectors needed for detecting per involved detector\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes = {"setDetectorClockTimes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newvector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorClockTimes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newvector,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newvector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1344, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorClockTimes") < 0)) __PYX_ERR(2, 1344, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newvector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorClockTimes", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1344, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorClockTimes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newvector);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newvector) {
  std::vector<double>  __pyx_v_cpp_newvector;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorClockTimes", 1);

  /* "src/pygcgopt/decomposition.pxi":1349
 *         :param newvector: vector of the times that the detectors needed for detecting per involved detector
 *         """
 *         cdef vector[double] cpp_newvector = newvector             # <<<<<<<<<<<<<<
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_newvector); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1349, __pyx_L1_error)
  __pyx_v_cpp_newvector = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1350
 *         """
 *         cdef vector[double] cpp_newvector = newvector
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)             # <<<<<<<<<<<<<<
 * 
 *     def setFinishedByFinisherOrig(self, bool finished):
 */
  try {
    __pyx_v_self->thisptr->setDetectorClockTimes(__pyx_v_cpp_newvector);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1350, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1344
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)
 * 
 *     def setDetectorClockTimes(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of the times that the detectors needed for detecting per involved detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setDetectorClockTimes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1352
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)
 * 
 *     def setFinishedByFinisherOrig(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector in the original problem (in case this partialdec was translated)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig, "PartialDecomposition.setFinishedByFinisherOrig(self, bool finished)\nsets whether this partialdec was finished by a finishing detector in the original problem (in case this partialdec was translated)\n\n        :param finished: was this partialdecs finished by a finishing detector in orig\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig = {"setFinishedByFinisherOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  bool __pyx_v_finished;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setFinishedByFinisherOrig (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_finished,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_finished)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1352, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setFinishedByFinisherOrig") < 0)) __PYX_ERR(2, 1352, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_finished = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_finished == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1352, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setFinishedByFinisherOrig", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1352, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setFinishedByFinisherOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_finished);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_finished) {
  bool __pyx_v_cpp_finished;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setFinishedByFinisherOrig", 1);

  /* "src/pygcgopt/decomposition.pxi":1357
 *         :param finished: was this partialdecs finished by a finishing detector in orig
 *         """
 *         cdef bool cpp_finished = finished             # <<<<<<<<<<<<<<
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)
 * 
 */
  __pyx_v_cpp_finished = __pyx_v_finished;

  /* "src/pygcgopt/decomposition.pxi":1358
 *         """
 *         cdef bool cpp_finished = finished
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)             # <<<<<<<<<<<<<<
 * 
 *     def setStemsFromOrig(self, bool fromorig):
 */
  try {
    __pyx_v_self->thisptr->setFinishedByFinisherOrig(__pyx_v_cpp_finished);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1358, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1352
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)
 * 
 *     def setFinishedByFinisherOrig(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector in the original problem (in case this partialdec was translated)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setFinishedByFinisherOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1360
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)
 * 
 *     def setStemsFromOrig(self, bool fromorig):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec stems from an orig problem partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig, "PartialDecomposition.setStemsFromOrig(self, bool fromorig)\nsets whether this partialdec stems from an orig problem partialdec\n\n        :param fromorig: has this partialdec ancestors from the orig problem\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig = {"setStemsFromOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  bool __pyx_v_fromorig;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setStemsFromOrig (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fromorig,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fromorig)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1360, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setStemsFromOrig") < 0)) __PYX_ERR(2, 1360, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_fromorig = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_fromorig == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1360, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setStemsFromOrig", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setStemsFromOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_fromorig);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, bool __pyx_v_fromorig) {
  bool __pyx_v_cpp_fromorig;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setStemsFromOrig", 1);

  /* "src/pygcgopt/decomposition.pxi":1365
 *         :param fromorig: has this partialdec ancestors from the orig problem
 *         """
 *         cdef bool cpp_fromorig = fromorig             # <<<<<<<<<<<<<<
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)
 * 
 */
  __pyx_v_cpp_fromorig = __pyx_v_fromorig;

  /* "src/pygcgopt/decomposition.pxi":1366
 *         """
 *         cdef bool cpp_fromorig = fromorig
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)             # <<<<<<<<<<<<<<
 * 
 *     def getDetectorClockTime(self, int detectorchain_id):
 */
  try {
    __pyx_v_self->thisptr->setStemsFromOrig(__pyx_v_cpp_fromorig);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1366, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1360
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)
 * 
 *     def setStemsFromOrig(self, bool fromorig):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec stems from an orig problem partialdec
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setStemsFromOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1368
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)
 * 
 *     def getDetectorClockTime(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """returns the time that the detector related to the given detectorchainindex needed for detecting
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime, "PartialDecomposition.getDetectorClockTime(self, int detectorchain_id)\nreturns the time that the detector related to the given detectorchainindex needed for detecting\n\n        :return: the clock time for the corresponding detector in the chain\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime = {"getDetectorClockTime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchain_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetectorClockTime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchain_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchain_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1368, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getDetectorClockTime") < 0)) __PYX_ERR(2, 1368, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_detectorchain_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchain_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1368, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getDetectorClockTime", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1368, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getDetectorClockTime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchain_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchain_id) {
  int __pyx_v_cpp_detectorchain_id;
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getDetectorClockTime", 1);

  /* "src/pygcgopt/decomposition.pxi":1373
 *         :return: the clock time for the corresponding detector in the chain
 *         """
 *         cdef int cpp_detectorchain_id = detectorchain_id             # <<<<<<<<<<<<<<
 *         cdef double result = self.thisptr.getDetectorClockTime(cpp_detectorchain_id)
 *         return result
 */
  __pyx_v_cpp_detectorchain_id = __pyx_v_detectorchain_id;

  /* "src/pygcgopt/decomposition.pxi":1374
 *         """
 *         cdef int cpp_detectorchain_id = detectorchain_id
 *         cdef double result = self.thisptr.getDetectorClockTime(cpp_detectorchain_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetectorClockTime(__pyx_v_cpp_detectorchain_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1374, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1375
 *         cdef int cpp_detectorchain_id = detectorchain_id
 *         cdef double result = self.thisptr.getDetectorClockTime(cpp_detectorchain_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getRepForBlock(self, int block_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1368
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)
 * 
 *     def getDetectorClockTime(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """returns the time that the detector related to the given detectorchainindex needed for detecting
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getDetectorClockTime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1377
 *         return result
 * 
 *     def getRepForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets index of the representative block for a block, this might be block_id itself
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock, "PartialDecomposition.getRepForBlock(self, int block_id)\ngets index of the representative block for a block, this might be block_id itself\n\n        :param block_id: id of the block the representative is asked for\n        :return: index of the representative block for a block, this might be block_id itself\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock = {"getRepForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_block_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getRepForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_block_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1377, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getRepForBlock") < 0)) __PYX_ERR(2, 1377, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_block_id = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_block_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1377, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getRepForBlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1377, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getRepForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_block_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_block_id) {
  int __pyx_v_cpp_block_id;
  int __pyx_v_result;
  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("getRepForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":1383
 *         :return: index of the representative block for a block, this might be block_id itself
 *         """
 *         cdef int cpp_block_id = block_id             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getRepForBlock(cpp_block_id)
 *         return result
 */
  __pyx_v_cpp_block_id = __pyx_v_block_id;

  /* "src/pygcgopt/decomposition.pxi":1384
 *         """
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getRepForBlock(cpp_block_id)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getRepForBlock(__pyx_v_cpp_block_id);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1384, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1385
 *         cdef int cpp_block_id = block_id
 *         cdef int result = self.thisptr.getRepForBlock(cpp_block_id)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def showVisualization(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1377
 *         return result
 * 
 *     def getRepForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets index of the representative block for a block, this might be block_id itself
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getRepForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1387
 *         return result
 * 
 *     def showVisualization(self):             # <<<<<<<<<<<<<<
 *         """generates and opens a gp visualization of the partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization, "PartialDecomposition.showVisualization(self)\ngenerates and opens a gp visualization of the partialdec\n\n        .. note:: linux only\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization = {"showVisualization", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showVisualization (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("showVisualization", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "showVisualization", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("showVisualization", 1);

  /* "src/pygcgopt/decomposition.pxi":1392
 *         .. note:: linux only
 *         """
 *         self.thisptr.showVisualization()             # <<<<<<<<<<<<<<
 * 
 *     def _repr_svg_(self):
 */
  try {
    __pyx_v_self->thisptr->showVisualization();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1392, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1387
 *         return result
 * 
 *     def showVisualization(self):             # <<<<<<<<<<<<<<
 *         """generates and opens a gp visualization of the partialdec
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.showVisualization", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1394
 *         self.thisptr.showVisualization()
 * 
 *     def _repr_svg_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("svg")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_, "PartialDecomposition._repr_svg_(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_ = {"_repr_svg_", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_repr_svg_ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_repr_svg_", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_repr_svg_", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_repr_svg_", 1);

  /* "src/pygcgopt/decomposition.pxi":1395
 * 
 *     def _repr_svg_(self):
 *         return self.__generate_visualization("svg")             # <<<<<<<<<<<<<<
 * 
 *     def _repr_png_(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.format = __pyx_n_u_svg;
  __pyx_t_1 = ((struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self->__pyx_vtab)->_PartialDecomposition__generate_visualization(__pyx_v_self, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1394
 *         self.thisptr.showVisualization()
 * 
 *     def _repr_svg_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("svg")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition._repr_svg_", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1397
 *         return self.__generate_visualization("svg")
 * 
 *     def _repr_png_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("png")
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_, "PartialDecomposition._repr_png_(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_ = {"_repr_png_", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_repr_png_ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("_repr_png_", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_repr_png_", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_repr_png_", 1);

  /* "src/pygcgopt/decomposition.pxi":1398
 * 
 *     def _repr_png_(self):
 *         return self.__generate_visualization("png")             # <<<<<<<<<<<<<<
 * 
 *     cdef __generate_visualization(self, format="svg"):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.format = __pyx_n_u_png;
  __pyx_t_1 = ((struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self->__pyx_vtab)->_PartialDecomposition__generate_visualization(__pyx_v_self, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1397
 *         return self.__generate_visualization("svg")
 * 
 *     def _repr_png_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("png")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition._repr_png_", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1400
 *         return self.__generate_visualization("png")
 * 
 *     cdef __generate_visualization(self, format="svg"):             # <<<<<<<<<<<<<<
 *         format = format.lower()
 *         if format not in ["svg", "png"]:
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_20PartialDecomposition__PartialDecomposition__generate_visualization(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization *__pyx_optional_args) {
  PyObject *__pyx_v_format = ((PyObject *)__pyx_n_u_svg);
  PyObject *__pyx_v_td = NULL;
  PyObject *__pyx_v_temp_path = NULL;
  PyObject *__pyx_v_gp_filename = NULL;
  PyObject *__pyx_v_outfile = NULL;
  PyObject *__pyx_v_c_gp_filename = NULL;
  PyObject *__pyx_v_c_outfile = NULL;
  GP_OUTPUT_FORMAT __pyx_v_c_output_format;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_UCS4 __pyx_t_8;
  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;
  char *__pyx_t_14;
  char *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_PartialDecomposition__generate_visualization", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_format = __pyx_optional_args->format;
    }
  }
  __Pyx_INCREF(__pyx_v_format);

  /* "src/pygcgopt/decomposition.pxi":1401
 * 
 *     cdef __generate_visualization(self, format="svg"):
 *         format = format.lower()             # <<<<<<<<<<<<<<
 *         if format not in ["svg", "png"]:
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_format, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/decomposition.pxi":1402
 *     cdef __generate_visualization(self, format="svg"):
 *         format = format.lower()
 *         if format not in ["svg", "png"]:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")
 * 
 */
  __Pyx_INCREF(__pyx_v_format);
  __pyx_t_1 = __pyx_v_format;
  __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_svg, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1402, __pyx_L1_error)
  if (__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_png, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1402, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __pyx_t_5;
  if (unlikely(__pyx_t_6)) {

    /* "src/pygcgopt/decomposition.pxi":1403
 *         format = format.lower()
 *         if format not in ["svg", "png"]:
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")             # <<<<<<<<<<<<<<
 * 
 *         if format not in self._visualizations:
 */
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = 0;
    __pyx_t_8 = 127;
    __Pyx_INCREF(__pyx_kp_u_Format);
    __pyx_t_7 += 7;
    __Pyx_GIVEREF(__pyx_kp_u_Format);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Format);
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_format, __pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) : __pyx_t_8;
    __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_kp_u_is_not_supported_Only_svg_and_p);
    __pyx_t_7 += 54;
    __Pyx_GIVEREF(__pyx_kp_u_is_not_supported_Only_svg_and_p);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_is_not_supported_Only_svg_and_p);
    __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(2, 1403, __pyx_L1_error)

    /* "src/pygcgopt/decomposition.pxi":1402
 *     cdef __generate_visualization(self, format="svg"):
 *         format = format.lower()
 *         if format not in ["svg", "png"]:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")
 * 
 */
  }

  /* "src/pygcgopt/decomposition.pxi":1405
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")
 * 
 *         if format not in self._visualizations:             # <<<<<<<<<<<<<<
 *             with tempfile.TemporaryDirectory() as td:
 *                 temp_path = Path(td)
 */
  if (unlikely(__pyx_v_self->_visualizations == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(2, 1405, __pyx_L1_error)
  }
  __pyx_t_6 = (__Pyx_PyDict_ContainsTF(__pyx_v_format, __pyx_v_self->_visualizations, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1405, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "src/pygcgopt/decomposition.pxi":1406
 * 
 *         if format not in self._visualizations:
 *             with tempfile.TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *                 temp_path = Path(td)
 * 
 */
    /*with:*/ {
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_tempfile); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_TemporaryDirectory); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_4 = 0;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_4 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 1406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1406, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_10 = NULL;
      __pyx_t_4 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_4 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1406, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __pyx_t_2 = __pyx_t_3;
      __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      /*try:*/ {
        {
          __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:*/ {
            __pyx_v_td = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1407
 *         if format not in self._visualizations:
 *             with tempfile.TemporaryDirectory() as td:
 *                 temp_path = Path(td)             # <<<<<<<<<<<<<<
 * 
 *                 gp_filename = temp_path.joinpath("vis.gp")
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Path); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1407, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_3)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_3);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_td};
              __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1407, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            }
            __pyx_v_temp_path = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1409
 *                 temp_path = Path(td)
 * 
 *                 gp_filename = temp_path.joinpath("vis.gp")             # <<<<<<<<<<<<<<
 *                 outfile = temp_path.joinpath("vis").with_suffix(f".{format}")
 * 
 */
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp_path, __pyx_n_s_joinpath); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1409, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_3)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_3);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_u_vis_gp};
              __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1409, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            }
            __pyx_v_gp_filename = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1410
 * 
 *                 gp_filename = temp_path.joinpath("vis.gp")
 *                 outfile = temp_path.joinpath("vis").with_suffix(f".{format}")             # <<<<<<<<<<<<<<
 * 
 *                 c_gp_filename = str_conversion(str(gp_filename))
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp_path, __pyx_n_s_joinpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1410, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_10 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_10)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_10);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_n_u_vis};
              __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1410, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_with_suffix); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1410, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_format, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1410, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_kp_u__6, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1410, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
              __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1410, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
            __pyx_v_outfile = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1412
 *                 outfile = temp_path.joinpath("vis").with_suffix(f".{format}")
 * 
 *                 c_gp_filename = str_conversion(str(gp_filename))             # <<<<<<<<<<<<<<
 *                 c_outfile = str_conversion(str(outfile))
 * 
 */
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1412, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_10 = __Pyx_PyObject_Unicode(__pyx_v_gp_filename); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1412, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_1 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
              __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1412, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
            __pyx_v_c_gp_filename = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1413
 * 
 *                 c_gp_filename = str_conversion(str(gp_filename))
 *                 c_outfile = str_conversion(str(outfile))             # <<<<<<<<<<<<<<
 * 
 *                 if format == "svg":
 */
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1413, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_10 = __Pyx_PyObject_Unicode(__pyx_v_outfile); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1413, __pyx_L11_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_1 = NULL;
            __pyx_t_4 = 0;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
                __pyx_t_4 = 1;
              }
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
              __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1413, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
            __pyx_v_c_outfile = __pyx_t_2;
            __pyx_t_2 = 0;

            /* "src/pygcgopt/decomposition.pxi":1415
 *                 c_outfile = str_conversion(str(outfile))
 * 
 *                 if format == "svg":             # <<<<<<<<<<<<<<
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG
 *                 elif format == "png":
 */
            __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_svg, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1415, __pyx_L11_error)
            if (__pyx_t_6) {

              /* "src/pygcgopt/decomposition.pxi":1416
 * 
 *                 if format == "svg":
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG             # <<<<<<<<<<<<<<
 *                 elif format == "png":
 *                     c_output_format = GP_OUTPUT_FORMAT_PNG
 */
              __pyx_v_c_output_format = GP_OUTPUT_FORMAT_SVG;

              /* "src/pygcgopt/decomposition.pxi":1415
 *                 c_outfile = str_conversion(str(outfile))
 * 
 *                 if format == "svg":             # <<<<<<<<<<<<<<
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG
 *                 elif format == "png":
 */
              goto __pyx_L17;
            }

            /* "src/pygcgopt/decomposition.pxi":1417
 *                 if format == "svg":
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG
 *                 elif format == "png":             # <<<<<<<<<<<<<<
 *                     c_output_format = GP_OUTPUT_FORMAT_PNG
 *                 else:
 */
            __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_png, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1417, __pyx_L11_error)
            if (__pyx_t_6) {

              /* "src/pygcgopt/decomposition.pxi":1418
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG
 *                 elif format == "png":
 *                     c_output_format = GP_OUTPUT_FORMAT_PNG             # <<<<<<<<<<<<<<
 *                 else:
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG #as default output format
 */
              __pyx_v_c_output_format = GP_OUTPUT_FORMAT_PNG;

              /* "src/pygcgopt/decomposition.pxi":1417
 *                 if format == "svg":
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG
 *                 elif format == "png":             # <<<<<<<<<<<<<<
 *                     c_output_format = GP_OUTPUT_FORMAT_PNG
 *                 else:
 */
              goto __pyx_L17;
            }

            /* "src/pygcgopt/decomposition.pxi":1420
 *                     c_output_format = GP_OUTPUT_FORMAT_PNG
 *                 else:
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG #as default output format             # <<<<<<<<<<<<<<
 * 
 *                 self.thisptr.generateVisualization(c_gp_filename, c_outfile, c_output_format)
 */
            /*else*/ {
              __pyx_v_c_output_format = GP_OUTPUT_FORMAT_SVG;
            }
            __pyx_L17:;

            /* "src/pygcgopt/decomposition.pxi":1422
 *                     c_output_format = GP_OUTPUT_FORMAT_SVG #as default output format
 * 
 *                 self.thisptr.generateVisualization(c_gp_filename, c_outfile, c_output_format)             # <<<<<<<<<<<<<<
 * 
 *                 if format == "svg":
 */
            __pyx_t_14 = __Pyx_PyObject_AsWritableString(__pyx_v_c_gp_filename); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(2, 1422, __pyx_L11_error)
            __pyx_t_15 = __Pyx_PyObject_AsWritableString(__pyx_v_c_outfile); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(2, 1422, __pyx_L11_error)
            try {
              __pyx_v_self->thisptr->generateVisualization(__pyx_t_14, __pyx_t_15, __pyx_v_c_output_format);
            } catch(...) {
              __Pyx_CppExn2PyErr();
              __PYX_ERR(2, 1422, __pyx_L11_error)
            }

            /* "src/pygcgopt/decomposition.pxi":1424
 *                 self.thisptr.generateVisualization(c_gp_filename, c_outfile, c_output_format)
 * 
 *                 if format == "svg":             # <<<<<<<<<<<<<<
 *                     data = outfile.read_text()
 *                 elif format == "png":
 */
            __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_svg, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1424, __pyx_L11_error)
            if (__pyx_t_6) {

              /* "src/pygcgopt/decomposition.pxi":1425
 * 
 *                 if format == "svg":
 *                     data = outfile.read_text()             # <<<<<<<<<<<<<<
 *                 elif format == "png":
 *                     data = outfile.read_bytes()
 */
              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_outfile, __pyx_n_s_read_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1425, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_10 = NULL;
              __pyx_t_4 = 0;
              #if CYTHON_UNPACK_METHODS
              if (likely(PyMethod_Check(__pyx_t_3))) {
                __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
                if (likely(__pyx_t_10)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                  __Pyx_INCREF(__pyx_t_10);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_3, function);
                  __pyx_t_4 = 1;
                }
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
                __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1425, __pyx_L11_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              }
              __pyx_v_data = __pyx_t_2;
              __pyx_t_2 = 0;

              /* "src/pygcgopt/decomposition.pxi":1424
 *                 self.thisptr.generateVisualization(c_gp_filename, c_outfile, c_output_format)
 * 
 *                 if format == "svg":             # <<<<<<<<<<<<<<
 *                     data = outfile.read_text()
 *                 elif format == "png":
 */
              goto __pyx_L18;
            }

            /* "src/pygcgopt/decomposition.pxi":1426
 *                 if format == "svg":
 *                     data = outfile.read_text()
 *                 elif format == "png":             # <<<<<<<<<<<<<<
 *                     data = outfile.read_bytes()
 *                 self._visualizations[format] = data
 */
            __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_format, __pyx_n_u_png, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(2, 1426, __pyx_L11_error)
            if (__pyx_t_6) {

              /* "src/pygcgopt/decomposition.pxi":1427
 *                     data = outfile.read_text()
 *                 elif format == "png":
 *                     data = outfile.read_bytes()             # <<<<<<<<<<<<<<
 *                 self._visualizations[format] = data
 * 
 */
              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_outfile, __pyx_n_s_read_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1427, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_10 = NULL;
              __pyx_t_4 = 0;
              #if CYTHON_UNPACK_METHODS
              if (likely(PyMethod_Check(__pyx_t_3))) {
                __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
                if (likely(__pyx_t_10)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                  __Pyx_INCREF(__pyx_t_10);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_3, function);
                  __pyx_t_4 = 1;
                }
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
                __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1427, __pyx_L11_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              }
              __pyx_v_data = __pyx_t_2;
              __pyx_t_2 = 0;

              /* "src/pygcgopt/decomposition.pxi":1426
 *                 if format == "svg":
 *                     data = outfile.read_text()
 *                 elif format == "png":             # <<<<<<<<<<<<<<
 *                     data = outfile.read_bytes()
 *                 self._visualizations[format] = data
 */
            }
            __pyx_L18:;

            /* "src/pygcgopt/decomposition.pxi":1428
 *                 elif format == "png":
 *                     data = outfile.read_bytes()
 *                 self._visualizations[format] = data             # <<<<<<<<<<<<<<
 * 
 *         return self._visualizations[format]
 */
            if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(2, 1428, __pyx_L11_error) }
            if (unlikely(__pyx_v_self->_visualizations == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(2, 1428, __pyx_L11_error)
            }
            if (unlikely((PyDict_SetItem(__pyx_v_self->_visualizations, __pyx_v_format, __pyx_v_data) < 0))) __PYX_ERR(2, 1428, __pyx_L11_error)

            /* "src/pygcgopt/decomposition.pxi":1406
 * 
 *         if format not in self._visualizations:
 *             with tempfile.TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *                 temp_path = Path(td)
 * 
 */
          }
          __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_L16_try_end;
          __pyx_L11_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition._PartialDecomposition__generate_visualization", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_10) < 0) __PYX_ERR(2, 1406, __pyx_L13_except_error)
            __Pyx_XGOTREF(__pyx_t_2);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_10);
            __pyx_t_1 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1406, __pyx_L13_except_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_16)) __PYX_ERR(2, 1406, __pyx_L13_except_error)
            __Pyx_GOTREF(__pyx_t_16);
            __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_16);
            __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
            if (__pyx_t_6 < 0) __PYX_ERR(2, 1406, __pyx_L13_except_error)
            __pyx_t_5 = (!__pyx_t_6);
            if (unlikely(__pyx_t_5)) {
              __Pyx_GIVEREF(__pyx_t_2);
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_XGIVEREF(__pyx_t_10);
              __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_10);
              __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_10 = 0; 
              __PYX_ERR(2, 1406, __pyx_L13_except_error)
            }
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            goto __pyx_L12_exception_handled;
          }
          __pyx_L13_except_error:;
          __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_L12_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_L16_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_9) {
            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__7, NULL);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 1406, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          }
          goto __pyx_L10;
        }
        __pyx_L10:;
      }
      goto __pyx_L22;
      __pyx_L7_error:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L1_error;
      __pyx_L22:;
    }

    /* "src/pygcgopt/decomposition.pxi":1405
 *             raise ValueError(f"Format {format} is not supported. Only \"svg\" and \"png\" are supported.")
 * 
 *         if format not in self._visualizations:             # <<<<<<<<<<<<<<
 *             with tempfile.TemporaryDirectory() as td:
 *                 temp_path = Path(td)
 */
  }

  /* "src/pygcgopt/decomposition.pxi":1430
 *                 self._visualizations[format] = data
 * 
 *         return self._visualizations[format]             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_visualizations == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(2, 1430, __pyx_L1_error)
  }
  __pyx_t_10 = __Pyx_PyDict_GetItem(__pyx_v_self->_visualizations, __pyx_v_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 1430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_r = __pyx_t_10;
  __pyx_t_10 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1400
 *         return self.__generate_visualization("png")
 * 
 *     cdef __generate_visualization(self, format="svg"):             # <<<<<<<<<<<<<<
 *         format = format.lower()
 *         if format not in ["svg", "png"]:
 */

  /* 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_10);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition._PartialDecomposition__generate_visualization", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_td);
  __Pyx_XDECREF(__pyx_v_temp_path);
  __Pyx_XDECREF(__pyx_v_gp_filename);
  __Pyx_XDECREF(__pyx_v_outfile);
  __Pyx_XDECREF(__pyx_v_c_gp_filename);
  __Pyx_XDECREF(__pyx_v_c_outfile);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1432
 *         return self._visualizations[format]
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return f"<PartialDecomposition: nBlocks={self.getNBlocks()}, nMasterConss={self.getNMasterconss()}, nMasterVars={self.getNMastervars()}, nLinkingVars={self.getNLinkingvars()}, maxForWhiteScore={self.maxForWhiteScore}>"
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_290__repr__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_290__repr__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_UCS4 __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "src/pygcgopt/decomposition.pxi":1433
 * 
 *     def __repr__(self):
 *         return f"<PartialDecomposition: nBlocks={self.getNBlocks()}, nMasterConss={self.getNMasterconss()}, nMasterVars={self.getNMastervars()}, nLinkingVars={self.getNLinkingvars()}, maxForWhiteScore={self.maxForWhiteScore}>"             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(11); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_3 = 127;
  __Pyx_INCREF(__pyx_kp_u_PartialDecomposition_nBlocks);
  __pyx_t_2 += 31;
  __Pyx_GIVEREF(__pyx_kp_u_PartialDecomposition_nBlocks);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_PartialDecomposition_nBlocks);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNBlocks); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_nMasterConss);
  __pyx_t_2 += 15;
  __Pyx_GIVEREF(__pyx_kp_u_nMasterConss);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_nMasterConss);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNMasterconss); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_kp_u_nMasterVars);
  __pyx_t_2 += 14;
  __Pyx_GIVEREF(__pyx_kp_u_nMasterVars);
  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u_nMasterVars);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNMastervars); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_nLinkingVars);
  __pyx_t_2 += 15;
  __Pyx_GIVEREF(__pyx_kp_u_nLinkingVars);
  PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u_nLinkingVars);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getNLinkingvars); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_kp_u_maxForWhiteScore);
  __pyx_t_2 += 19;
  __Pyx_GIVEREF(__pyx_kp_u_maxForWhiteScore);
  PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u_maxForWhiteScore);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maxForWhiteScore_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3;
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 9, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__8);
  __pyx_t_2 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__8);
  PyTuple_SET_ITEM(__pyx_t_1, 10, __pyx_kp_u__8);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 11, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1432
 *         return self._visualizations[format]
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return f"<PartialDecomposition: nBlocks={self.getNBlocks()}, nMasterConss={self.getNMasterconss()}, nMasterVars={self.getNMastervars()}, nLinkingVars={self.getNLinkingvars()}, maxForWhiteScore={self.maxForWhiteScore}>"
 * 
 */

  /* 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_6);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1450
 * 
 *     # BEGIN AUTOGENERATED BLOCK
 *     def setAncestorList(PartialDecomposition self, object newlist):             # <<<<<<<<<<<<<<
 *         """set ancestor list directly
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList, "PartialDecomposition.setAncestorList(self, newlist)\nset ancestor list directly\n\n        :param newlist: new list of ancestor ids.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList = {"setAncestorList", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_newlist = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAncestorList (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_newlist,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_newlist)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1450, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setAncestorList") < 0)) __PYX_ERR(2, 1450, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_newlist = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setAncestorList", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 1450, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setAncestorList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_newlist);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_newlist) {
  std::vector<int>  __pyx_v_cpp_newlist;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setAncestorList", 1);

  /* "src/pygcgopt/decomposition.pxi":1455
 *         :param newlist: new list of ancestor ids.
 *         """
 *         cdef vector[int] cpp_newlist = newlist             # <<<<<<<<<<<<<<
 *         self.thisptr.setAncestorList(cpp_newlist)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_newlist); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1455, __pyx_L1_error)
  __pyx_v_cpp_newlist = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1456
 *         """
 *         cdef vector[int] cpp_newlist = newlist
 *         self.thisptr.setAncestorList(cpp_newlist)             # <<<<<<<<<<<<<<
 * 
 *     def getDetectorClockTimes(PartialDecomposition self):
 */
  try {
    __pyx_v_self->thisptr->setAncestorList(__pyx_v_cpp_newlist);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1456, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1450
 * 
 *     # BEGIN AUTOGENERATED BLOCK
 *     def setAncestorList(PartialDecomposition self, object newlist):             # <<<<<<<<<<<<<<
 *         """set ancestor list directly
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setAncestorList", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1458
 *         self.thisptr.setAncestorList(cpp_newlist)
 * 
 *     def getDetectorClockTimes(PartialDecomposition self):             # <<<<<<<<<<<<<<
 *         """returns a vector of the clock times that each detector needed that was involved in this partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes, "PartialDecomposition.getDetectorClockTimes(self)\nreturns a vector of the clock times that each detector needed that was involved in this partialdec\n\n        :return: vector of the clock times.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes = {"getDetectorClockTimes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetectorClockTimes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDetectorClockTimes", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDetectorClockTimes", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  std::vector<double>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getDetectorClockTimes", 1);

  /* "src/pygcgopt/decomposition.pxi":1463
 *         :return: vector of the clock times.
 *         """
 *         cdef vector[double] result = self.thisptr.getDetectorClockTimes()             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getDetectorClockTimes();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1463, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1464
 *         """
 *         cdef vector[double] result = self.thisptr.getDetectorClockTimes()
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     # def getDetectorchain(PartialDecomposition self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_double(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1458
 *         self.thisptr.setAncestorList(cpp_newlist)
 * 
 *     def getDetectorClockTimes(PartialDecomposition self):             # <<<<<<<<<<<<<<
 *         """returns a vector of the clock times that each detector needed that was involved in this partialdec
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getDetectorClockTimes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1474
 *     #     return result
 * 
 *     def getRepVarmap(PartialDecomposition self, int repid, int blockrepid):             # <<<<<<<<<<<<<<
 *         """Gets the represenation varmap
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap, "PartialDecomposition.getRepVarmap(self, int repid, int blockrepid)\nGets the represenation varmap\n\n        Var map is vector for represenative repid and the blockrepid-th block that is represented by repid\n\n        :param repid: id of representative\n        :param blockrepid: id of block\n        :return: the represenation varmap as vector for represenative repid and the blockrepid-th block that is represented by repid.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap = {"getRepVarmap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_repid;
  int __pyx_v_blockrepid;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getRepVarmap (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_repid,&__pyx_n_s_blockrepid,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_repid)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1474, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blockrepid)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1474, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getRepVarmap", 1, 2, 2, 1); __PYX_ERR(2, 1474, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getRepVarmap") < 0)) __PYX_ERR(2, 1474, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_repid = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_repid == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1474, __pyx_L3_error)
    __pyx_v_blockrepid = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_blockrepid == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1474, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getRepVarmap", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 1474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getRepVarmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_repid, __pyx_v_blockrepid);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_repid, int __pyx_v_blockrepid) {
  int __pyx_v_cpp_repid;
  int __pyx_v_cpp_blockrepid;
  std::vector<int>  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getRepVarmap", 1);

  /* "src/pygcgopt/decomposition.pxi":1483
 *         :return: the represenation varmap as vector for represenative repid and the blockrepid-th block that is represented by repid.
 *         """
 *         cdef int cpp_repid = repid             # <<<<<<<<<<<<<<
 *         cdef int cpp_blockrepid = blockrepid
 *         cdef vector[int] result = self.thisptr.getRepVarmap(cpp_repid, cpp_blockrepid)
 */
  __pyx_v_cpp_repid = __pyx_v_repid;

  /* "src/pygcgopt/decomposition.pxi":1484
 *         """
 *         cdef int cpp_repid = repid
 *         cdef int cpp_blockrepid = blockrepid             # <<<<<<<<<<<<<<
 *         cdef vector[int] result = self.thisptr.getRepVarmap(cpp_repid, cpp_blockrepid)
 *         return result
 */
  __pyx_v_cpp_blockrepid = __pyx_v_blockrepid;

  /* "src/pygcgopt/decomposition.pxi":1485
 *         cdef int cpp_repid = repid
 *         cdef int cpp_blockrepid = blockrepid
 *         cdef vector[int] result = self.thisptr.getRepVarmap(cpp_repid, cpp_blockrepid)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getRepVarmap(__pyx_v_cpp_repid, __pyx_v_cpp_blockrepid);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1485, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/decomposition.pxi":1486
 *         cdef int cpp_blockrepid = blockrepid
 *         cdef vector[int] result = self.thisptr.getRepVarmap(cpp_repid, cpp_blockrepid)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def getVarProbindexForBlock(PartialDecomposition self, int varid, int block):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1474
 *     #     return result
 * 
 *     def getRepVarmap(PartialDecomposition self, int repid, int blockrepid):             # <<<<<<<<<<<<<<
 *         """Gets the represenation varmap
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getRepVarmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1488
 *         return result
 * 
 *     def getVarProbindexForBlock(PartialDecomposition self, int varid, int block):             # <<<<<<<<<<<<<<
 *         """Gets index in variables array of a block for a variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock, "PartialDecomposition.getVarProbindexForBlock(self, int varid, int block)\nGets index in variables array of a block for a variable\n\n        :param varid: the id of the variable the index\n        :param block: the corresponding block id\n        :return:  returns index in variables array of a block for a variable.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock = {"getVarProbindexForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_varid;
  int __pyx_v_block;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVarProbindexForBlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varid,&__pyx_n_s_block,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varid)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1488, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_block)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1488, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getVarProbindexForBlock", 1, 2, 2, 1); __PYX_ERR(2, 1488, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVarProbindexForBlock") < 0)) __PYX_ERR(2, 1488, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_varid = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_varid == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1488, __pyx_L3_error)
    __pyx_v_block = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_block == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1488, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVarProbindexForBlock", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 1488, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getVarProbindexForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_varid, __pyx_v_block);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_varid, int __pyx_v_block) {
  int __pyx_v_cpp_varid;
  int __pyx_v_cpp_block;
  int __pyx_v_result;
  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("getVarProbindexForBlock", 1);

  /* "src/pygcgopt/decomposition.pxi":1495
 *         :return:  returns index in variables array of a block for a variable.
 *         """
 *         cdef int cpp_varid = varid             # <<<<<<<<<<<<<<
 *         cdef int cpp_block = block
 *         cdef int result = self.thisptr.getVarProbindexForBlock(cpp_varid, cpp_block)
 */
  __pyx_v_cpp_varid = __pyx_v_varid;

  /* "src/pygcgopt/decomposition.pxi":1496
 *         """
 *         cdef int cpp_varid = varid
 *         cdef int cpp_block = block             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getVarProbindexForBlock(cpp_varid, cpp_block)
 *         return result
 */
  __pyx_v_cpp_block = __pyx_v_block;

  /* "src/pygcgopt/decomposition.pxi":1497
 *         cdef int cpp_varid = varid
 *         cdef int cpp_block = block
 *         cdef int result = self.thisptr.getVarProbindexForBlock(cpp_varid, cpp_block)             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getVarProbindexForBlock(__pyx_v_cpp_varid, __pyx_v_cpp_block);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1497, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1498
 *         cdef int cpp_block = block
 *         cdef int result = self.thisptr.getVarProbindexForBlock(cpp_varid, cpp_block)
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     # def isEqual(PartialDecomposition self, PartialDecomposition otherpartialdec, unsigned int * isequal, bool sortpartialdecs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/decomposition.pxi":1488
 *         return result
 * 
 *     def getVarProbindexForBlock(PartialDecomposition self, int varid, int block):             # <<<<<<<<<<<<<<
 *         """Gets index in variables array of a block for a variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.getVarProbindexForBlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1517
 *     #     raise NotImplementedError()
 * 
 *     def setConsPartitionStatistics(PartialDecomposition self, int detectorchainindex, ConsPart partition, object consclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used conspartition.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics, "PartialDecomposition.setConsPartitionStatistics(self, int detectorchainindex, ConsPart partition, consclassesmaster)\nregisters statistics for a used conspartition.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics = {"setConsPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition = 0;
  PyObject *__pyx_v_consclassesmaster = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setConsPartitionStatistics (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,&__pyx_n_s_partition,&__pyx_n_s_consclassesmaster,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setConsPartitionStatistics", 1, 3, 3, 1); __PYX_ERR(2, 1517, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consclassesmaster)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setConsPartitionStatistics", 1, 3, 3, 2); __PYX_ERR(2, 1517, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setConsPartitionStatistics") < 0)) __PYX_ERR(2, 1517, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
    __pyx_v_partition = ((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)values[1]);
    __pyx_v_consclassesmaster = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setConsPartitionStatistics", 1, 3, 3, __pyx_nargs); __PYX_ERR(2, 1517, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setConsPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partition), __pyx_ptype_8pygcgopt_3gcg_ConsPart, 1, "partition", 0))) __PYX_ERR(2, 1517, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex, __pyx_v_partition, __pyx_v_consclassesmaster);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex, struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition, PyObject *__pyx_v_consclassesmaster) {
  int __pyx_v_cpp_detectorchainindex;
  gcg::ConsPartition *__pyx_v_cpp_partition;
  std::vector<int>  __pyx_v_cpp_consclassesmaster;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::ConsPartition *__pyx_t_1;
  std::vector<int>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setConsPartitionStatistics", 1);

  /* "src/pygcgopt/decomposition.pxi":1520
 *         """registers statistics for a used conspartition.
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef ConsPartition* cpp_partition = partition.consPartition
 *         cdef vector[int] cpp_consclassesmaster = consclassesmaster
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":1521
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef ConsPartition* cpp_partition = partition.consPartition             # <<<<<<<<<<<<<<
 *         cdef vector[int] cpp_consclassesmaster = consclassesmaster
 *         self.thisptr.setConsPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_consclassesmaster)
 */
  __pyx_t_1 = __pyx_v_partition->consPartition;
  __pyx_v_cpp_partition = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1522
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef ConsPartition* cpp_partition = partition.consPartition
 *         cdef vector[int] cpp_consclassesmaster = consclassesmaster             # <<<<<<<<<<<<<<
 *         self.thisptr.setConsPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_consclassesmaster)
 * 
 */
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_consclassesmaster); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1522, __pyx_L1_error)
  __pyx_v_cpp_consclassesmaster = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "src/pygcgopt/decomposition.pxi":1523
 *         cdef ConsPartition* cpp_partition = partition.consPartition
 *         cdef vector[int] cpp_consclassesmaster = consclassesmaster
 *         self.thisptr.setConsPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_consclassesmaster)             # <<<<<<<<<<<<<<
 * 
 *     #def setDetectorchain(PartialDecomposition self, object givenDetectorChain):
 */
  try {
    __pyx_v_self->thisptr->setConsPartitionStatistics(__pyx_v_cpp_detectorchainindex, __pyx_v_cpp_partition, __pyx_v_cpp_consclassesmaster);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1523, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1517
 *     #     raise NotImplementedError()
 * 
 *     def setConsPartitionStatistics(PartialDecomposition self, int detectorchainindex, ConsPart partition, object consclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used conspartition.
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setConsPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":1533
 *     #     self.thisptr.setDetectorchain(cpp_givenDetectorChain)
 * 
 *     def setVarPartitionStatistics(PartialDecomposition self, int detectorchainindex, VarPart partition, object varclasseslinking, object varclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used varpartition.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics, "PartialDecomposition.setVarPartitionStatistics(self, int detectorchainindex, VarPart partition, varclasseslinking, varclassesmaster)\nregisters statistics for a used varpartition.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics = {"setVarPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_detectorchainindex;
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition = 0;
  PyObject *__pyx_v_varclasseslinking = 0;
  PyObject *__pyx_v_varclassesmaster = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarPartitionStatistics (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detectorchainindex,&__pyx_n_s_partition,&__pyx_n_s_varclasseslinking,&__pyx_n_s_varclassesmaster,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorchainindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1533, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1533, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarPartitionStatistics", 1, 4, 4, 1); __PYX_ERR(2, 1533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varclasseslinking)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1533, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarPartitionStatistics", 1, 4, 4, 2); __PYX_ERR(2, 1533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varclassesmaster)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1533, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVarPartitionStatistics", 1, 4, 4, 3); __PYX_ERR(2, 1533, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarPartitionStatistics") < 0)) __PYX_ERR(2, 1533, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_detectorchainindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_detectorchainindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 1533, __pyx_L3_error)
    __pyx_v_partition = ((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)values[1]);
    __pyx_v_varclasseslinking = values[2];
    __pyx_v_varclassesmaster = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarPartitionStatistics", 1, 4, 4, __pyx_nargs); __PYX_ERR(2, 1533, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partition), __pyx_ptype_8pygcgopt_3gcg_VarPart, 1, "partition", 0))) __PYX_ERR(2, 1533, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v_detectorchainindex, __pyx_v_partition, __pyx_v_varclasseslinking, __pyx_v_varclassesmaster);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, int __pyx_v_detectorchainindex, struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition, PyObject *__pyx_v_varclasseslinking, PyObject *__pyx_v_varclassesmaster) {
  int __pyx_v_cpp_detectorchainindex;
  gcg::VarPartition *__pyx_v_cpp_partition;
  std::vector<int>  __pyx_v_cpp_varclasseslinking;
  std::vector<int>  __pyx_v_cpp_varclassesmaster;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::VarPartition *__pyx_t_1;
  std::vector<int>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarPartitionStatistics", 1);

  /* "src/pygcgopt/decomposition.pxi":1536
 *         """registers statistics for a used varpartition.
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex             # <<<<<<<<<<<<<<
 *         cdef VarPartition * cpp_partition = partition.varPartition
 *         cdef vector[int] cpp_varclasseslinking = varclasseslinking
 */
  __pyx_v_cpp_detectorchainindex = __pyx_v_detectorchainindex;

  /* "src/pygcgopt/decomposition.pxi":1537
 *         """
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef VarPartition * cpp_partition = partition.varPartition             # <<<<<<<<<<<<<<
 *         cdef vector[int] cpp_varclasseslinking = varclasseslinking
 *         cdef vector[int] cpp_varclassesmaster = varclassesmaster
 */
  __pyx_t_1 = __pyx_v_partition->varPartition;
  __pyx_v_cpp_partition = __pyx_t_1;

  /* "src/pygcgopt/decomposition.pxi":1538
 *         cdef int cpp_detectorchainindex = detectorchainindex
 *         cdef VarPartition * cpp_partition = partition.varPartition
 *         cdef vector[int] cpp_varclasseslinking = varclasseslinking             # <<<<<<<<<<<<<<
 *         cdef vector[int] cpp_varclassesmaster = varclassesmaster
 *         self.thisptr.setVarPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_varclasseslinking, cpp_varclassesmaster)
 */
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_varclasseslinking); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1538, __pyx_L1_error)
  __pyx_v_cpp_varclasseslinking = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "src/pygcgopt/decomposition.pxi":1539
 *         cdef VarPartition * cpp_partition = partition.varPartition
 *         cdef vector[int] cpp_varclasseslinking = varclasseslinking
 *         cdef vector[int] cpp_varclassesmaster = varclassesmaster             # <<<<<<<<<<<<<<
 *         self.thisptr.setVarPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_varclasseslinking, cpp_varclassesmaster)
 */
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_varclassesmaster); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 1539, __pyx_L1_error)
  __pyx_v_cpp_varclassesmaster = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "src/pygcgopt/decomposition.pxi":1540
 *         cdef vector[int] cpp_varclasseslinking = varclasseslinking
 *         cdef vector[int] cpp_varclassesmaster = varclassesmaster
 *         self.thisptr.setVarPartitionStatistics(cpp_detectorchainindex, cpp_partition, cpp_varclasseslinking, cpp_varclassesmaster)             # <<<<<<<<<<<<<<
 */
  try {
    __pyx_v_self->thisptr->setVarPartitionStatistics(__pyx_v_cpp_detectorchainindex, __pyx_v_cpp_partition, __pyx_v_cpp_varclasseslinking, __pyx_v_cpp_varclassesmaster);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(2, 1540, __pyx_L1_error)
  }

  /* "src/pygcgopt/decomposition.pxi":1533
 *     #     self.thisptr.setDetectorchain(cpp_givenDetectorChain)
 * 
 *     def setVarPartitionStatistics(PartialDecomposition self, int detectorchainindex, VarPart partition, object varclasseslinking, object varclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used varpartition.
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.setVarPartitionStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/decomposition.pxi":10
 *     cdef bool delete_thisptr
 * 
 *     cdef public dict _visualizations             # <<<<<<<<<<<<<<
 * 
 *     # Stores the objects used by the user for referencing the decomposition blocks.
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations___get__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations___get__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_visualizations);
  __pyx_r = __pyx_v_self->_visualizations;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_2__set__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyDict_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_value))) __PYX_ERR(2, 10, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_visualizations);
  __Pyx_DECREF(__pyx_v_self->_visualizations);
  __pyx_v_self->_visualizations = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition._visualizations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_4__del__(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_visualizations);
  __Pyx_DECREF(__pyx_v_self->_visualizations);
  __pyx_v_self->_visualizations = ((PyObject*)Py_None);

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

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__, "PartialDecomposition.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__, "PartialDecomposition.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_no_default___reduce___due_to_non, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.PartialDecomposition.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":5
 * 
 *     @staticmethod
 *     cdef create(DETPROBDATA* thisptr):             # <<<<<<<<<<<<<<
 *         if thisptr == NULL:
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_11DetProbData_create(gcg::DETPROBDATA *__pyx_v_thisptr) {
  struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_new_DetProbData = NULL;
  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("create", 1);

  /* "src/pygcgopt/detprobdata.pxi":6
 *     @staticmethod
 *     cdef create(DETPROBDATA* thisptr):
 *         if thisptr == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 *         new_DetProbData = DetProbData()
 */
  __pyx_t_1 = (__pyx_v_thisptr == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "src/pygcgopt/detprobdata.pxi":7
 *     cdef create(DETPROBDATA* thisptr):
 *         if thisptr == NULL:
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")             # <<<<<<<<<<<<<<
 *         new_DetProbData = DetProbData()
 *         new_DetProbData.thisptr = thisptr
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(9, 7, __pyx_L1_error)

    /* "src/pygcgopt/detprobdata.pxi":6
 *     @staticmethod
 *     cdef create(DETPROBDATA* thisptr):
 *         if thisptr == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 *         new_DetProbData = DetProbData()
 */
  }

  /* "src/pygcgopt/detprobdata.pxi":8
 *         if thisptr == NULL:
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 *         new_DetProbData = DetProbData()             # <<<<<<<<<<<<<<
 *         new_DetProbData.thisptr = thisptr
 *         return new_DetProbData
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_new_DetProbData = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detprobdata.pxi":9
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 *         new_DetProbData = DetProbData()
 *         new_DetProbData.thisptr = thisptr             # <<<<<<<<<<<<<<
 *         return new_DetProbData
 * 
 */
  __pyx_v_new_DetProbData->thisptr = __pyx_v_thisptr;

  /* "src/pygcgopt/detprobdata.pxi":10
 *         new_DetProbData = DetProbData()
 *         new_DetProbData.thisptr = thisptr
 *         return new_DetProbData             # <<<<<<<<<<<<<<
 * 
 *     def createConsPart(self, name, nclasses, ncons):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_new_DetProbData);
  __pyx_r = ((PyObject *)__pyx_v_new_DetProbData);
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":5
 * 
 *     @staticmethod
 *     cdef create(DETPROBDATA* thisptr):             # <<<<<<<<<<<<<<
 *         if thisptr == NULL:
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_new_DetProbData);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":12
 *         return new_DetProbData
 * 
 *     def createConsPart(self, name, nclasses, ncons):             # <<<<<<<<<<<<<<
 *         """returns a ConsPart object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_1createConsPart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_createConsPart, "DetProbData.createConsPart(self, name, nclasses, ncons)\nreturns a ConsPart object\n\n        :param name: name of the constraint partition\n        :type name: str\n        :param nclasses: number of classes\n        :type nclasses: int\n        :param ncons: number of constraints\n        :type ncons: int\n        :return: constraint partition object\n        :rtype: :class:`ConsPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_1createConsPart = {"createConsPart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_1createConsPart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_createConsPart};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_1createConsPart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_nclasses = 0;
  PyObject *__pyx_v_ncons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createConsPart (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_nclasses,&__pyx_n_s_ncons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 12, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nclasses)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 12, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createConsPart", 1, 3, 3, 1); __PYX_ERR(9, 12, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ncons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 12, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createConsPart", 1, 3, 3, 2); __PYX_ERR(9, 12, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "createConsPart") < 0)) __PYX_ERR(9, 12, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_nclasses = values[1];
    __pyx_v_ncons = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createConsPart", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 12, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.createConsPart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_createConsPart(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_name, __pyx_v_nclasses, __pyx_v_ncons);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_createConsPart(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_nclasses, PyObject *__pyx_v_ncons) {
  SCIP *__pyx_v_scip;
  PyObject *__pyx_v_c_name = NULL;
  gcg::ConsPartition *__pyx_v_conspatitionptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  gcg::ConsPartition *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createConsPart", 1);

  /* "src/pygcgopt/detprobdata.pxi":24
 *         :rtype: :class:`ConsPart`
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()             # <<<<<<<<<<<<<<
 *         c_name = str_conversion(name)
 *         cdef ConsPartition* conspatitionptr = new ConsPartition(scip, c_name, nclasses, ncons)
 */
  __pyx_v_scip = __pyx_v_self->thisptr->getScip();

  /* "src/pygcgopt/detprobdata.pxi":25
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         cdef ConsPartition* conspatitionptr = new ConsPartition(scip, c_name, nclasses, ncons)
 *         return ConsPart.create(conspatitionptr, self)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detprobdata.pxi":26
 *         cdef SCIP* scip = self.thisptr.getScip()
 *         c_name = str_conversion(name)
 *         cdef ConsPartition* conspatitionptr = new ConsPartition(scip, c_name, nclasses, ncons)             # <<<<<<<<<<<<<<
 *         return ConsPart.create(conspatitionptr, self)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(9, 26, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_nclasses); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 26, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_ncons); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 26, __pyx_L1_error)
  try {
    __pyx_t_8 = new gcg::ConsPartition(__pyx_v_scip, __pyx_t_5, __pyx_t_6, __pyx_t_7);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 26, __pyx_L1_error)
  }
  __pyx_v_conspatitionptr = __pyx_t_8;

  /* "src/pygcgopt/detprobdata.pxi":27
 *         c_name = str_conversion(name)
 *         cdef ConsPartition* conspatitionptr = new ConsPartition(scip, c_name, nclasses, ncons)
 *         return ConsPart.create(conspatitionptr, self)             # <<<<<<<<<<<<<<
 * 
 *     def createVarPart(self, name, nclasses, nvars):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_8ConsPart_create(__pyx_v_conspatitionptr, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":12
 *         return new_DetProbData
 * 
 *     def createConsPart(self, name, nclasses, ncons):             # <<<<<<<<<<<<<<
 *         """returns a ConsPart object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.createConsPart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":29
 *         return ConsPart.create(conspatitionptr, self)
 * 
 *     def createVarPart(self, name, nclasses, nvars):             # <<<<<<<<<<<<<<
 *         """returns a VarPart object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_3createVarPart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_2createVarPart, "DetProbData.createVarPart(self, name, nclasses, nvars)\nreturns a VarPart object\n\n        :param name: name of the variable partition\n        :type name: str\n        :param nclasses: number of classes\n        :type nclasses: int\n        :param nvars: number of variables\n        :type nvars: int\n        :return: variable partition object\n        :rtype: :class:`VarPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_3createVarPart = {"createVarPart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_3createVarPart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_2createVarPart};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_3createVarPart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_nclasses = 0;
  PyObject *__pyx_v_nvars = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createVarPart (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_nclasses,&__pyx_n_s_nvars,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 29, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nclasses)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 29, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createVarPart", 1, 3, 3, 1); __PYX_ERR(9, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nvars)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 29, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createVarPart", 1, 3, 3, 2); __PYX_ERR(9, 29, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "createVarPart") < 0)) __PYX_ERR(9, 29, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_nclasses = values[1];
    __pyx_v_nvars = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createVarPart", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 29, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.createVarPart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_2createVarPart(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_name, __pyx_v_nclasses, __pyx_v_nvars);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_2createVarPart(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_nclasses, PyObject *__pyx_v_nvars) {
  SCIP *__pyx_v_scip;
  PyObject *__pyx_v_c_name = NULL;
  gcg::VarPartition *__pyx_v_varpatitionptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  gcg::VarPartition *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createVarPart", 1);

  /* "src/pygcgopt/detprobdata.pxi":41
 *         :rtype: :class:`VarPart`
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()             # <<<<<<<<<<<<<<
 *         c_name = str_conversion(name)
 *         cdef VarPartition* varpatitionptr = new VarPartition(scip, c_name, nclasses, nvars)
 */
  __pyx_v_scip = __pyx_v_self->thisptr->getScip();

  /* "src/pygcgopt/detprobdata.pxi":42
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()
 *         c_name = str_conversion(name)             # <<<<<<<<<<<<<<
 *         cdef VarPartition* varpatitionptr = new VarPartition(scip, c_name, nclasses, nvars)
 *         return VarPart.create(varpatitionptr, self)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/detprobdata.pxi":43
 *         cdef SCIP* scip = self.thisptr.getScip()
 *         c_name = str_conversion(name)
 *         cdef VarPartition* varpatitionptr = new VarPartition(scip, c_name, nclasses, nvars)             # <<<<<<<<<<<<<<
 *         return VarPart.create(varpatitionptr, self)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(9, 43, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_nclasses); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 43, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_nvars); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 43, __pyx_L1_error)
  try {
    __pyx_t_8 = new gcg::VarPartition(__pyx_v_scip, __pyx_t_5, __pyx_t_6, __pyx_t_7);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 43, __pyx_L1_error)
  }
  __pyx_v_varpatitionptr = __pyx_t_8;

  /* "src/pygcgopt/detprobdata.pxi":44
 *         c_name = str_conversion(name)
 *         cdef VarPartition* varpatitionptr = new VarPartition(scip, c_name, nclasses, nvars)
 *         return VarPart.create(varpatitionptr, self)             # <<<<<<<<<<<<<<
 * 
 *     def candidatesNBlocks(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_7VarPart_create(__pyx_v_varpatitionptr, __pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":29
 *         return ConsPart.create(conspatitionptr, self)
 * 
 *     def createVarPart(self, name, nclasses, nvars):             # <<<<<<<<<<<<<<
 *         """returns a VarPart object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.createVarPart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":46
 *         return VarPart.create(varpatitionptr, self)
 * 
 *     def candidatesNBlocks(self):             # <<<<<<<<<<<<<<
 *         """candidate for the number of blocks, second int indicates how often a candidate was added
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks, "DetProbData.candidatesNBlocks(self)\ncandidate for the number of blocks, second int indicates how often a candidate was added\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks = {"candidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("candidatesNBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("candidatesNBlocks", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "candidatesNBlocks", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<std::pair<int,int> >  __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<std::pair<int,int> >  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("candidatesNBlocks", 1);

  /* "src/pygcgopt/detprobdata.pxi":49
 *         """candidate for the number of blocks, second int indicates how often a candidate was added
 *         """
 *         cdef vector[pair[int, int]] result = self.thisptr.candidatesNBlocks             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->candidatesNBlocks;
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":50
 *         """
 *         cdef vector[pair[int, int]] result = self.thisptr.candidatesNBlocks
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_int_2c_int_3e___(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":46
 *         return VarPart.create(varpatitionptr, self)
 * 
 *     def candidatesNBlocks(self):             # <<<<<<<<<<<<<<
 *         """candidate for the number of blocks, second int indicates how often a candidate was added
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.candidatesNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":52
 *         return result
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):             # <<<<<<<<<<<<<<
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks, "DetProbData.candidatesNBlocks(self, candidatesNBlocks)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks = {"candidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_candidatesNBlocks = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("candidatesNBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_candidatesNBlocks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_candidatesNBlocks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 52, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "candidatesNBlocks") < 0)) __PYX_ERR(9, 52, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_candidatesNBlocks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("candidatesNBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 52, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.candidatesNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_candidatesNBlocks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_candidatesNBlocks) {
  std::vector<std::pair<int,int> >  __pyx_v_cpp_candidatesNBlocks;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<std::pair<int,int> >  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("candidatesNBlocks", 1);

  /* "src/pygcgopt/detprobdata.pxi":53
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks             # <<<<<<<<<<<<<<
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_pair_3c_int_2c_int_3e___(__pyx_v_candidatesNBlocks); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 53, __pyx_L1_error)
  __pyx_v_cpp_candidatesNBlocks = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":54
 *     def candidatesNBlocks(self, object candidatesNBlocks):
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks             # <<<<<<<<<<<<<<
 * 
 *     def conspartitioncollection(self):
 */
  __pyx_v_self->thisptr->candidatesNBlocks = __pyx_v_cpp_candidatesNBlocks;

  /* "src/pygcgopt/detprobdata.pxi":52
 *         return result
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):             # <<<<<<<<<<<<<<
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.candidatesNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":56
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 * 
 *     def conspartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different constraint class distributions.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection, "DetProbData.conspartitioncollection(self)\ncollection of different constraint class distributions.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection = {"conspartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("conspartitioncollection (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("conspartitioncollection", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "conspartitioncollection", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<gcg::ConsPartition *>  __pyx_v_result;
  gcg::ConsPartition *__pyx_8genexpr9__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<gcg::ConsPartition *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<gcg::ConsPartition *> ::iterator __pyx_t_3;
  gcg::ConsPartition *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("conspartitioncollection", 1);

  /* "src/pygcgopt/detprobdata.pxi":59
 *         """collection of different constraint class distributions.
 *         """
 *         cdef vector[ConsPartition *] result = self.thisptr.conspartitioncollection             # <<<<<<<<<<<<<<
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->conspartitioncollection;
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":60
 *         """
 *         cdef vector[ConsPartition *] result = self.thisptr.conspartitioncollection
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]             # <<<<<<<<<<<<<<
 * 
 *     def conspartitioncollection(self, object conspartitioncollection):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_8genexpr9__pyx_v_r = __pyx_t_4;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_weakref); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_proxy); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      __pyx_t_8 = 0;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_8 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 60, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __pyx_t_7 = __pyx_f_8pygcgopt_3gcg_8ConsPart_create(__pyx_8genexpr9__pyx_v_r, ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_t_5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_7))) __PYX_ERR(9, 60, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":56
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 * 
 *     def conspartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different constraint class distributions.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.conspartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":62
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]
 * 
 *     def conspartitioncollection(self, object conspartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection, "DetProbData.conspartitioncollection(self, conspartitioncollection)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection = {"conspartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_conspartitioncollection = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("conspartitioncollection (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_conspartitioncollection,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_conspartitioncollection)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 62, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "conspartitioncollection") < 0)) __PYX_ERR(9, 62, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_conspartitioncollection = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("conspartitioncollection", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 62, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.conspartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_conspartitioncollection);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_conspartitioncollection) {
  std::vector<gcg::ConsPartition *>  __pyx_v_cpp_conspartitioncollection;
  gcg::ConsPartition *__pyx_v_conspartitioncollection_ptr;
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_conspartitioncollection_element = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("conspartitioncollection", 1);

  /* "src/pygcgopt/detprobdata.pxi":66
 *         # maybe it will be fixed in a future version of Cython
 *         cdef vector[ConsPartition *] cpp_conspartitioncollection
 *         cdef ConsPartition * conspartitioncollection_ptr = NULL             # <<<<<<<<<<<<<<
 *         cdef ConsPart conspartitioncollection_element
 *         for conspartitioncollection_element in conspartitioncollection:
 */
  __pyx_v_conspartitioncollection_ptr = NULL;

  /* "src/pygcgopt/detprobdata.pxi":68
 *         cdef ConsPartition * conspartitioncollection_ptr = NULL
 *         cdef ConsPart conspartitioncollection_element
 *         for conspartitioncollection_element in conspartitioncollection:             # <<<<<<<<<<<<<<
 *             conspartitioncollection_ptr = <ConsPartition*> conspartitioncollection_element.consPartition
 *             cpp_conspartitioncollection.push_back(conspartitioncollection_ptr)
 */
  if (likely(PyList_CheckExact(__pyx_v_conspartitioncollection)) || PyTuple_CheckExact(__pyx_v_conspartitioncollection)) {
    __pyx_t_1 = __pyx_v_conspartitioncollection; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_conspartitioncollection); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 68, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 68, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(9, 68, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 68, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 68, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(9, 68, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 68, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      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(9, 68, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_8pygcgopt_3gcg_ConsPart))))) __PYX_ERR(9, 68, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_conspartitioncollection_element, ((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "src/pygcgopt/detprobdata.pxi":69
 *         cdef ConsPart conspartitioncollection_element
 *         for conspartitioncollection_element in conspartitioncollection:
 *             conspartitioncollection_ptr = <ConsPartition*> conspartitioncollection_element.consPartition             # <<<<<<<<<<<<<<
 *             cpp_conspartitioncollection.push_back(conspartitioncollection_ptr)
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 */
    __pyx_v_conspartitioncollection_ptr = ((gcg::ConsPartition *)__pyx_v_conspartitioncollection_element->consPartition);

    /* "src/pygcgopt/detprobdata.pxi":70
 *         for conspartitioncollection_element in conspartitioncollection:
 *             conspartitioncollection_ptr = <ConsPartition*> conspartitioncollection_element.consPartition
 *             cpp_conspartitioncollection.push_back(conspartitioncollection_ptr)             # <<<<<<<<<<<<<<
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 * 
 */
    try {
      __pyx_v_cpp_conspartitioncollection.push_back(__pyx_v_conspartitioncollection_ptr);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(9, 70, __pyx_L1_error)
    }

    /* "src/pygcgopt/detprobdata.pxi":68
 *         cdef ConsPartition * conspartitioncollection_ptr = NULL
 *         cdef ConsPart conspartitioncollection_element
 *         for conspartitioncollection_element in conspartitioncollection:             # <<<<<<<<<<<<<<
 *             conspartitioncollection_ptr = <ConsPartition*> conspartitioncollection_element.consPartition
 *             cpp_conspartitioncollection.push_back(conspartitioncollection_ptr)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/detprobdata.pxi":71
 *             conspartitioncollection_ptr = <ConsPartition*> conspartitioncollection_element.consPartition
 *             cpp_conspartitioncollection.push_back(conspartitioncollection_ptr)
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection             # <<<<<<<<<<<<<<
 * 
 *     def varpartitioncollection(self):
 */
  __pyx_v_self->thisptr->conspartitioncollection = __pyx_v_cpp_conspartitioncollection;

  /* "src/pygcgopt/detprobdata.pxi":62
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]
 * 
 *     def conspartitioncollection(self, object conspartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */

  /* 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_4);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.conspartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_conspartitioncollection_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":73
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 * 
 *     def varpartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different variable class distributions.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection, "DetProbData.varpartitioncollection(self)\ncollection of different variable class distributions.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection = {"varpartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("varpartitioncollection (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("varpartitioncollection", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "varpartitioncollection", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<gcg::VarPartition *>  __pyx_v_result;
  gcg::VarPartition *__pyx_9genexpr10__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<gcg::VarPartition *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<gcg::VarPartition *> ::iterator __pyx_t_3;
  gcg::VarPartition *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("varpartitioncollection", 1);

  /* "src/pygcgopt/detprobdata.pxi":76
 *         """collection of different variable class distributions.
 *         """
 *         cdef vector[VarPartition *] result = self.thisptr.varpartitioncollection             # <<<<<<<<<<<<<<
 *         return [VarPart.create(r, self) for r in result]
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->varpartitioncollection;
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":77
 *         """
 *         cdef vector[VarPartition *] result = self.thisptr.varpartitioncollection
 *         return [VarPart.create(r, self) for r in result]             # <<<<<<<<<<<<<<
 * 
 *     def varpartitioncollection(self, object varpartitioncollection):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr10__pyx_v_r = __pyx_t_4;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_7VarPart_create(__pyx_9genexpr10__pyx_v_r, __pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 77, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":73
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 * 
 *     def varpartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different variable class distributions.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.varpartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":79
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def varpartitioncollection(self, object varpartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection, "DetProbData.varpartitioncollection(self, varpartitioncollection)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection = {"varpartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varpartitioncollection = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("varpartitioncollection (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varpartitioncollection,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varpartitioncollection)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 79, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "varpartitioncollection") < 0)) __PYX_ERR(9, 79, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_varpartitioncollection = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("varpartitioncollection", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 79, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.varpartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_varpartitioncollection);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varpartitioncollection) {
  std::vector<gcg::VarPartition *>  __pyx_v_cpp_varpartitioncollection;
  gcg::VarPartition *__pyx_v_varpartitioncollection_ptr;
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_varpartitioncollection_element = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("varpartitioncollection", 1);

  /* "src/pygcgopt/detprobdata.pxi":83
 *         # maybe it will be fixed in a future version of Cython
 *         cdef vector[VarPartition *] cpp_varpartitioncollection
 *         cdef VarPartition * varpartitioncollection_ptr = NULL             # <<<<<<<<<<<<<<
 *         cdef VarPart varpartitioncollection_element
 *         for varpartitioncollection_element in varpartitioncollection:
 */
  __pyx_v_varpartitioncollection_ptr = NULL;

  /* "src/pygcgopt/detprobdata.pxi":85
 *         cdef VarPartition * varpartitioncollection_ptr = NULL
 *         cdef VarPart varpartitioncollection_element
 *         for varpartitioncollection_element in varpartitioncollection:             # <<<<<<<<<<<<<<
 *             varpartitioncollection_ptr = <VarPartition*> varpartitioncollection_element.varPartition
 *             cpp_varpartitioncollection.push_back(varpartitioncollection_ptr)
 */
  if (likely(PyList_CheckExact(__pyx_v_varpartitioncollection)) || PyTuple_CheckExact(__pyx_v_varpartitioncollection)) {
    __pyx_t_1 = __pyx_v_varpartitioncollection; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_varpartitioncollection); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 85, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 85, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(9, 85, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 85, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 85, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(9, 85, __pyx_L1_error)
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 85, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      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(9, 85, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_8pygcgopt_3gcg_VarPart))))) __PYX_ERR(9, 85, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_varpartitioncollection_element, ((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "src/pygcgopt/detprobdata.pxi":86
 *         cdef VarPart varpartitioncollection_element
 *         for varpartitioncollection_element in varpartitioncollection:
 *             varpartitioncollection_ptr = <VarPartition*> varpartitioncollection_element.varPartition             # <<<<<<<<<<<<<<
 *             cpp_varpartitioncollection.push_back(varpartitioncollection_ptr)
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 */
    __pyx_v_varpartitioncollection_ptr = ((gcg::VarPartition *)__pyx_v_varpartitioncollection_element->varPartition);

    /* "src/pygcgopt/detprobdata.pxi":87
 *         for varpartitioncollection_element in varpartitioncollection:
 *             varpartitioncollection_ptr = <VarPartition*> varpartitioncollection_element.varPartition
 *             cpp_varpartitioncollection.push_back(varpartitioncollection_ptr)             # <<<<<<<<<<<<<<
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 * 
 */
    try {
      __pyx_v_cpp_varpartitioncollection.push_back(__pyx_v_varpartitioncollection_ptr);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(9, 87, __pyx_L1_error)
    }

    /* "src/pygcgopt/detprobdata.pxi":85
 *         cdef VarPartition * varpartitioncollection_ptr = NULL
 *         cdef VarPart varpartitioncollection_element
 *         for varpartitioncollection_element in varpartitioncollection:             # <<<<<<<<<<<<<<
 *             varpartitioncollection_ptr = <VarPartition*> varpartitioncollection_element.varPartition
 *             cpp_varpartitioncollection.push_back(varpartitioncollection_ptr)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/detprobdata.pxi":88
 *             varpartitioncollection_ptr = <VarPartition*> varpartitioncollection_element.varPartition
 *             cpp_varpartitioncollection.push_back(varpartitioncollection_ptr)
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection             # <<<<<<<<<<<<<<
 * 
 *     def classificationtime(self):
 */
  __pyx_v_self->thisptr->varpartitioncollection = __pyx_v_cpp_varpartitioncollection;

  /* "src/pygcgopt/detprobdata.pxi":79
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def varpartitioncollection(self, object varpartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */

  /* 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_4);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.varpartitioncollection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_varpartitioncollection_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":90
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 * 
 *     def classificationtime(self):             # <<<<<<<<<<<<<<
 *         """time that was consumed by the classification of the constraint and variables classifiers.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_17classificationtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_16classificationtime, "DetProbData.classificationtime(self)\ntime that was consumed by the classification of the constraint and variables classifiers.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_17classificationtime = {"classificationtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_17classificationtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_16classificationtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_17classificationtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classificationtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("classificationtime", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "classificationtime", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_16classificationtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_16classificationtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("classificationtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":93
 *         """time that was consumed by the classification of the constraint and variables classifiers.
 *         """
 *         cdef double result = self.thisptr.classificationtime             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->classificationtime;
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":94
 *         """
 *         cdef double result = self.thisptr.classificationtime
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def classificationtime(self, double classificationtime):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":90
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 * 
 *     def classificationtime(self):             # <<<<<<<<<<<<<<
 *         """time that was consumed by the classification of the constraint and variables classifiers.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.classificationtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":96
 *         return result
 * 
 *     def classificationtime(self, double classificationtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_classificationtime = classificationtime
 *         self.thisptr.classificationtime = cpp_classificationtime
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_19classificationtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_18classificationtime, "DetProbData.classificationtime(self, double classificationtime)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_19classificationtime = {"classificationtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_19classificationtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_18classificationtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_19classificationtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_classificationtime;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classificationtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_classificationtime,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_classificationtime)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 96, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "classificationtime") < 0)) __PYX_ERR(9, 96, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_classificationtime = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_classificationtime == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 96, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("classificationtime", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 96, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.classificationtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_18classificationtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_classificationtime);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_18classificationtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_classificationtime) {
  double __pyx_v_cpp_classificationtime;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classificationtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":97
 * 
 *     def classificationtime(self, double classificationtime):
 *         cdef double cpp_classificationtime = classificationtime             # <<<<<<<<<<<<<<
 *         self.thisptr.classificationtime = cpp_classificationtime
 * 
 */
  __pyx_v_cpp_classificationtime = __pyx_v_classificationtime;

  /* "src/pygcgopt/detprobdata.pxi":98
 *     def classificationtime(self, double classificationtime):
 *         cdef double cpp_classificationtime = classificationtime
 *         self.thisptr.classificationtime = cpp_classificationtime             # <<<<<<<<<<<<<<
 * 
 *     def nblockscandidatescalctime(self):
 */
  __pyx_v_self->thisptr->classificationtime = __pyx_v_cpp_classificationtime;

  /* "src/pygcgopt/detprobdata.pxi":96
 *         return result
 * 
 *     def classificationtime(self, double classificationtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_classificationtime = classificationtime
 *         self.thisptr.classificationtime = cpp_classificationtime
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":100
 *         self.thisptr.classificationtime = cpp_classificationtime
 * 
 *     def nblockscandidatescalctime(self):             # <<<<<<<<<<<<<<
 *         """time that was used to calulate the candidates of te block number.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime, "DetProbData.nblockscandidatescalctime(self)\ntime that was used to calulate the candidates of te block number.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime = {"nblockscandidatescalctime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nblockscandidatescalctime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("nblockscandidatescalctime", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "nblockscandidatescalctime", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("nblockscandidatescalctime", 1);

  /* "src/pygcgopt/detprobdata.pxi":103
 *         """time that was used to calulate the candidates of te block number.
 *         """
 *         cdef double result = self.thisptr.nblockscandidatescalctime             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->nblockscandidatescalctime;
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":104
 *         """
 *         cdef double result = self.thisptr.nblockscandidatescalctime
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":100
 *         self.thisptr.classificationtime = cpp_classificationtime
 * 
 *     def nblockscandidatescalctime(self):             # <<<<<<<<<<<<<<
 *         """time that was used to calulate the candidates of te block number.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.nblockscandidatescalctime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":106
 *         return result
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime, "DetProbData.nblockscandidatescalctime(self, double nblockscandidatescalctime)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime = {"nblockscandidatescalctime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_nblockscandidatescalctime;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nblockscandidatescalctime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nblockscandidatescalctime,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nblockscandidatescalctime)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "nblockscandidatescalctime") < 0)) __PYX_ERR(9, 106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_nblockscandidatescalctime = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_nblockscandidatescalctime == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 106, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("nblockscandidatescalctime", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.nblockscandidatescalctime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_nblockscandidatescalctime);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_nblockscandidatescalctime) {
  double __pyx_v_cpp_nblockscandidatescalctime;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nblockscandidatescalctime", 1);

  /* "src/pygcgopt/detprobdata.pxi":107
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime             # <<<<<<<<<<<<<<
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 * 
 */
  __pyx_v_cpp_nblockscandidatescalctime = __pyx_v_nblockscandidatescalctime;

  /* "src/pygcgopt/detprobdata.pxi":108
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime             # <<<<<<<<<<<<<<
 * 
 *     def postprocessingtime(self):
 */
  __pyx_v_self->thisptr->nblockscandidatescalctime = __pyx_v_cpp_nblockscandidatescalctime;

  /* "src/pygcgopt/detprobdata.pxi":106
 *         return result
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":110
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 * 
 *     def postprocessingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent in postproceesing decomposigtions.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_25postprocessingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_24postprocessingtime, "DetProbData.postprocessingtime(self)\ntime that was spent in postproceesing decomposigtions.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_25postprocessingtime = {"postprocessingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_25postprocessingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_24postprocessingtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_25postprocessingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("postprocessingtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("postprocessingtime", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "postprocessingtime", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_24postprocessingtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_24postprocessingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("postprocessingtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":113
 *         """time that was spent in postproceesing decomposigtions.
 *         """
 *         cdef double result = self.thisptr.postprocessingtime             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->postprocessingtime;
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":114
 *         """
 *         cdef double result = self.thisptr.postprocessingtime
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def postprocessingtime(self, double postprocessingtime):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":110
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 * 
 *     def postprocessingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent in postproceesing decomposigtions.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.postprocessingtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":116
 *         return result
 * 
 *     def postprocessingtime(self, double postprocessingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_postprocessingtime = postprocessingtime
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_27postprocessingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_26postprocessingtime, "DetProbData.postprocessingtime(self, double postprocessingtime)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_27postprocessingtime = {"postprocessingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_27postprocessingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_26postprocessingtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_27postprocessingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_postprocessingtime;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("postprocessingtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_postprocessingtime,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_postprocessingtime)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 116, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "postprocessingtime") < 0)) __PYX_ERR(9, 116, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_postprocessingtime = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_postprocessingtime == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 116, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("postprocessingtime", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 116, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.postprocessingtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_26postprocessingtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_postprocessingtime);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_26postprocessingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_postprocessingtime) {
  double __pyx_v_cpp_postprocessingtime;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("postprocessingtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":117
 * 
 *     def postprocessingtime(self, double postprocessingtime):
 *         cdef double cpp_postprocessingtime = postprocessingtime             # <<<<<<<<<<<<<<
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 * 
 */
  __pyx_v_cpp_postprocessingtime = __pyx_v_postprocessingtime;

  /* "src/pygcgopt/detprobdata.pxi":118
 *     def postprocessingtime(self, double postprocessingtime):
 *         cdef double cpp_postprocessingtime = postprocessingtime
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime             # <<<<<<<<<<<<<<
 * 
 *     def translatingtime(self):
 */
  __pyx_v_self->thisptr->postprocessingtime = __pyx_v_cpp_postprocessingtime;

  /* "src/pygcgopt/detprobdata.pxi":116
 *         return result
 * 
 *     def postprocessingtime(self, double postprocessingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_postprocessingtime = postprocessingtime
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":120
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 * 
 *     def translatingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent by transforming partialdecs between presolved and orig problem.
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_29translatingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_28translatingtime, "DetProbData.translatingtime(self)\ntime that was spent by transforming partialdecs between presolved and orig problem.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_29translatingtime = {"translatingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_29translatingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_28translatingtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_29translatingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("translatingtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("translatingtime", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "translatingtime", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_28translatingtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_28translatingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  double __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("translatingtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":123
 *         """time that was spent by transforming partialdecs between presolved and orig problem.
 *         """
 *         cdef double result = self.thisptr.translatingtime             # <<<<<<<<<<<<<<
 *         return result
 * 
 */
  __pyx_t_1 = __pyx_v_self->thisptr->translatingtime;
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":124
 *         """
 *         cdef double result = self.thisptr.translatingtime
 *         return result             # <<<<<<<<<<<<<<
 * 
 *     def translatingtime(self, double translatingtime):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":120
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 * 
 *     def translatingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent by transforming partialdecs between presolved and orig problem.
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.translatingtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":126
 *         return result
 * 
 *     def translatingtime(self, double translatingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_translatingtime = translatingtime
 *         self.thisptr.translatingtime = cpp_translatingtime
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_31translatingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_30translatingtime, "DetProbData.translatingtime(self, double translatingtime)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_31translatingtime = {"translatingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_31translatingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_30translatingtime};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_31translatingtime(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_translatingtime;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("translatingtime (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_translatingtime,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_translatingtime)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 126, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "translatingtime") < 0)) __PYX_ERR(9, 126, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_translatingtime = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_translatingtime == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 126, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("translatingtime", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 126, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.translatingtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_30translatingtime(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_translatingtime);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_30translatingtime(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, double __pyx_v_translatingtime) {
  double __pyx_v_cpp_translatingtime;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("translatingtime", 1);

  /* "src/pygcgopt/detprobdata.pxi":127
 * 
 *     def translatingtime(self, double translatingtime):
 *         cdef double cpp_translatingtime = translatingtime             # <<<<<<<<<<<<<<
 *         self.thisptr.translatingtime = cpp_translatingtime
 * 
 */
  __pyx_v_cpp_translatingtime = __pyx_v_translatingtime;

  /* "src/pygcgopt/detprobdata.pxi":128
 *     def translatingtime(self, double translatingtime):
 *         cdef double cpp_translatingtime = translatingtime
 *         self.thisptr.translatingtime = cpp_translatingtime             # <<<<<<<<<<<<<<
 * 
 *     def addConsPartition(self, ConsPart partition):
 */
  __pyx_v_self->thisptr->translatingtime = __pyx_v_cpp_translatingtime;

  /* "src/pygcgopt/detprobdata.pxi":126
 *         return result
 * 
 *     def translatingtime(self, double translatingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_translatingtime = translatingtime
 *         self.thisptr.translatingtime = cpp_translatingtime
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":130
 *         self.thisptr.translatingtime = cpp_translatingtime
 * 
 *     def addConsPartition(self, ConsPart partition):             # <<<<<<<<<<<<<<
 *         """adds a constraint partition if it is no duplicate of an existing constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_33addConsPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_32addConsPartition, "DetProbData.addConsPartition(self, ConsPart partition)\nadds a constraint partition if it is no duplicate of an existing constraint partition\n\n        :param partition: constraint partition object\n        :type partition: :class:`ConsPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_33addConsPartition = {"addConsPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_33addConsPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_32addConsPartition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_33addConsPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addConsPartition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 130, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addConsPartition") < 0)) __PYX_ERR(9, 130, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partition = ((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addConsPartition", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addConsPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partition), __pyx_ptype_8pygcgopt_3gcg_ConsPart, 1, "partition", 0))) __PYX_ERR(9, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_32addConsPartition(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partition);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_32addConsPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_ConsPart *__pyx_v_partition) {
  gcg::ConsPartition *__pyx_v_cpp_partition;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::ConsPartition *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addConsPartition", 1);

  /* "src/pygcgopt/detprobdata.pxi":136
 *         :type partition: :class:`ConsPart`
 *         """
 *         cdef ConsPartition* cpp_partition = partition.consPartition             # <<<<<<<<<<<<<<
 *         self.thisptr.addConsPartition(cpp_partition)
 * 
 */
  __pyx_t_1 = __pyx_v_partition->consPartition;
  __pyx_v_cpp_partition = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":137
 *         """
 *         cdef ConsPartition* cpp_partition = partition.consPartition
 *         self.thisptr.addConsPartition(cpp_partition)             # <<<<<<<<<<<<<<
 * 
 *     def addCandidatesNBlocksNVotes(self, int candidate, int nvotes):
 */
  try {
    __pyx_v_self->thisptr->addConsPartition(__pyx_v_cpp_partition);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 137, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":130
 *         self.thisptr.translatingtime = cpp_translatingtime
 * 
 *     def addConsPartition(self, ConsPart partition):             # <<<<<<<<<<<<<<
 *         """adds a constraint partition if it is no duplicate of an existing constraint partition
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addConsPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":139
 *         self.thisptr.addConsPartition(cpp_partition)
 * 
 *     def addCandidatesNBlocksNVotes(self, int candidate, int nvotes):             # <<<<<<<<<<<<<<
 *         """adds a candidate for block number and counts how often a candidate is added
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes, "DetProbData.addCandidatesNBlocksNVotes(self, int candidate, int nvotes)\nadds a candidate for block number and counts how often a candidate is added\n\n        :param candidate: candidate for block size\n        :type candidate: int\n        :param nvotes: number of votes this candidates will get\n        :type nvotes: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes = {"addCandidatesNBlocksNVotes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_candidate;
  int __pyx_v_nvotes;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addCandidatesNBlocksNVotes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_candidate,&__pyx_n_s_nvotes,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_candidate)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 139, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nvotes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 139, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addCandidatesNBlocksNVotes", 1, 2, 2, 1); __PYX_ERR(9, 139, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addCandidatesNBlocksNVotes") < 0)) __PYX_ERR(9, 139, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_candidate = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_candidate == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 139, __pyx_L3_error)
    __pyx_v_nvotes = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_nvotes == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 139, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addCandidatesNBlocksNVotes", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addCandidatesNBlocksNVotes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_candidate, __pyx_v_nvotes);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, int __pyx_v_candidate, int __pyx_v_nvotes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addCandidatesNBlocksNVotes", 1);

  /* "src/pygcgopt/detprobdata.pxi":147
 *         :type nvotes: int
 *         """
 *         self.thisptr.addCandidatesNBlocksNVotes(candidate, nvotes)             # <<<<<<<<<<<<<<
 * 
 *     def addPartialdecToAncestor(self, PartialDecomposition partialdec):
 */
  try {
    __pyx_v_self->thisptr->addCandidatesNBlocksNVotes(__pyx_v_candidate, __pyx_v_nvotes);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 147, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":139
 *         self.thisptr.addConsPartition(cpp_partition)
 * 
 *     def addCandidatesNBlocksNVotes(self, int candidate, int nvotes):             # <<<<<<<<<<<<<<
 *         """adds a candidate for block number and counts how often a candidate is added
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addCandidatesNBlocksNVotes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":149
 *         self.thisptr.addCandidatesNBlocksNVotes(candidate, nvotes)
 * 
 *     def addPartialdecToAncestor(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to ancestor partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor, "DetProbData.addPartialdecToAncestor(self, PartialDecomposition partialdec)\nadds a partialdec to ancestor partialdecs\n\n        :param partialdec: partialdec that is added to the ancestor partialdecs\n        :type partialdec: :class:`PartialDecomposition`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor = {"addPartialdecToAncestor", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPartialdecToAncestor (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 149, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPartialdecToAncestor") < 0)) __PYX_ERR(9, 149, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPartialdecToAncestor", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 149, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToAncestor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(9, 149, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_partialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPartialdecToAncestor", 1);

  /* "src/pygcgopt/detprobdata.pxi":155
 *         :type partialdec: :class:`PartialDecomposition`
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr             # <<<<<<<<<<<<<<
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_partialdec->thisptr;
  __pyx_v_cpp_partialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":156
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def addPartialdecToOpen(self, PartialDecomposition partialdec):
 */
  try {
    __pyx_v_self->thisptr->addPartialdecToAncestor(__pyx_v_cpp_partialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 156, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":149
 *         self.thisptr.addCandidatesNBlocksNVotes(candidate, nvotes)
 * 
 *     def addPartialdecToAncestor(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to ancestor partialdecs
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToAncestor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":158
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)
 * 
 *     def addPartialdecToOpen(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to current partialdecs (data structure for partialdecs that are going to processed in the propagation rounds)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen, "DetProbData.addPartialdecToOpen(self, PartialDecomposition partialdec)\nadds a partialdec to current partialdecs (data structure for partialdecs that are going to processed in the propagation rounds)\n\n        :param partialdec: pointer of partialdec to be added\n        :type partialdec: :class:`PartialDecomposition`\n        :return: True if the partialdecs was successfully added (i.e. it is no duplicate of a known partialdec)\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen = {"addPartialdecToOpen", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPartialdecToOpen (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 158, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPartialdecToOpen") < 0)) __PYX_ERR(9, 158, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPartialdecToOpen", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToOpen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(9, 158, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_partialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPartialdecToOpen", 1);

  /* "src/pygcgopt/detprobdata.pxi":166
 *         :rtype: bool
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr             # <<<<<<<<<<<<<<
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_partialdec->thisptr;
  __pyx_v_cpp_partialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":167
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def addPartialdecToFinished(self, PartialDecomposition partialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->addPartialdecToOpen(__pyx_v_cpp_partialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 167, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":158
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)
 * 
 *     def addPartialdecToOpen(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to current partialdecs (data structure for partialdecs that are going to processed in the propagation rounds)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToOpen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":169
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)
 * 
 *     def addPartialdecToFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished, "DetProbData.addPartialdecToFinished(self, PartialDecomposition partialdec)\nadds a partialdec to finished partialdecs\n\n        .. seealso:: * :meth:`addPartialdecToFinishedUnchecked()`\n\n        :param partialdec: pointer of partialdec that is going to be added to the finished partialdecs (data structure to carry finished decompositions)\n        :type partialdec: :class:`PartialDecomposition`\n        :return: True if the partialdecs was successfully added (i.e. it is no duplicate of a known partialdec)\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished = {"addPartialdecToFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPartialdecToFinished (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 169, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPartialdecToFinished") < 0)) __PYX_ERR(9, 169, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPartialdecToFinished", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 169, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(9, 169, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_partialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPartialdecToFinished", 1);

  /* "src/pygcgopt/detprobdata.pxi":179
 *         :rtype: bool
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr             # <<<<<<<<<<<<<<
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_partialdec->thisptr;
  __pyx_v_cpp_partialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":180
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->addPartialdecToFinished(__pyx_v_cpp_partialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 180, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":169
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)
 * 
 *     def addPartialdecToFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":182
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)
 * 
 *     def addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs without checking for duplicates, dev has to check this on his own
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked, "DetProbData.addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec)\nadds a partialdec to finished partialdecs without checking for duplicates, dev has to check this on his own\n\n        .. seealso:: * :meth:`addPartialdecToFinished()`\n\n        :param partialdec: pointer of partialdec that is going to be added unchecked to the finished partialdecs (data structure to carry finished decompositions)\n        :type partialdec: :class:`PartialDecomposition`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked = {"addPartialdecToFinishedUnchecked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPartialdecToFinishedUnchecked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 182, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPartialdecToFinishedUnchecked") < 0)) __PYX_ERR(9, 182, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPartialdecToFinishedUnchecked", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToFinishedUnchecked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(9, 182, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_partialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPartialdecToFinishedUnchecked", 1);

  /* "src/pygcgopt/detprobdata.pxi":190
 *         :type partialdec: :class:`PartialDecomposition`
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr             # <<<<<<<<<<<<<<
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_partialdec->thisptr;
  __pyx_v_cpp_partialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":191
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def addVarPartition(self, VarPart partition):
 */
  try {
    __pyx_v_self->thisptr->addPartialdecToFinishedUnchecked(__pyx_v_cpp_partialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 191, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":182
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)
 * 
 *     def addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs without checking for duplicates, dev has to check this on his own
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addPartialdecToFinishedUnchecked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":193
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)
 * 
 *     def addVarPartition(self, VarPart partition):             # <<<<<<<<<<<<<<
 *         """adds a variable partition if it is no duplicate of an existing variable partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_45addVarPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_44addVarPartition, "DetProbData.addVarPartition(self, VarPart partition)\nadds a variable partition if it is no duplicate of an existing variable partition\n\n        :param partition: variable partition object\n        :type partition: :class:`VarPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_45addVarPartition = {"addVarPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_45addVarPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_44addVarPartition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_45addVarPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addVarPartition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 193, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addVarPartition") < 0)) __PYX_ERR(9, 193, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partition = ((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addVarPartition", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 193, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addVarPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partition), __pyx_ptype_8pygcgopt_3gcg_VarPart, 1, "partition", 0))) __PYX_ERR(9, 193, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_44addVarPartition(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partition);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_44addVarPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_VarPart *__pyx_v_partition) {
  gcg::VarPartition *__pyx_v_cpp_partition;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::VarPartition *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addVarPartition", 1);

  /* "src/pygcgopt/detprobdata.pxi":199
 *         :type partition: :class:`VarPart`
 *         """
 *         cdef VarPartition* cpp_partition = partition.varPartition             # <<<<<<<<<<<<<<
 *         self.thisptr.addVarPartition(cpp_partition)
 * 
 */
  __pyx_t_1 = __pyx_v_partition->varPartition;
  __pyx_v_cpp_partition = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":200
 *         """
 *         cdef VarPartition* cpp_partition = partition.varPartition
 *         self.thisptr.addVarPartition(cpp_partition)             # <<<<<<<<<<<<<<
 * 
 *     def clearAncestorPartialdecs(self):
 */
  try {
    __pyx_v_self->thisptr->addVarPartition(__pyx_v_cpp_partition);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 200, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":193
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)
 * 
 *     def addVarPartition(self, VarPart partition):             # <<<<<<<<<<<<<<
 *         """adds a variable partition if it is no duplicate of an existing variable partition
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.addVarPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":202
 *         self.thisptr.addVarPartition(cpp_partition)
 * 
 *     def clearAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears ancestor partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs, "DetProbData.clearAncestorPartialdecs(self)\nclears ancestor partialdec data structure\n\n        .. note:: does not free the partialdecs themselves\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs = {"clearAncestorPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clearAncestorPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clearAncestorPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clearAncestorPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clearAncestorPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":207
 *         .. note:: does not free the partialdecs themselves
 *         """
 *         self.thisptr.clearAncestorPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def clearCurrentPartialdecs(self):
 */
  try {
    __pyx_v_self->thisptr->clearAncestorPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 207, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":202
 *         self.thisptr.addVarPartition(cpp_partition)
 * 
 *     def clearAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears ancestor partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.clearAncestorPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":209
 *         self.thisptr.clearAncestorPartialdecs()
 * 
 *     def clearCurrentPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears current partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs, "DetProbData.clearCurrentPartialdecs(self)\nclears current partialdec data structure\n\n        .. note:: does not free the partialdecs themselves.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs = {"clearCurrentPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clearCurrentPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clearCurrentPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clearCurrentPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clearCurrentPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":214
 *         .. note:: does not free the partialdecs themselves.
 *         """
 *         self.thisptr.clearCurrentPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def clearFinishedPartialdecs(self):
 */
  try {
    __pyx_v_self->thisptr->clearCurrentPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 214, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":209
 *         self.thisptr.clearAncestorPartialdecs()
 * 
 *     def clearCurrentPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears current partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.clearCurrentPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":216
 *         self.thisptr.clearCurrentPartialdecs()
 * 
 *     def clearFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears finished partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs, "DetProbData.clearFinishedPartialdecs(self)\nclears finished partialdec data structure\n\n        .. note:: does not free the partialdecs themselves.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs = {"clearFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clearFinishedPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clearFinishedPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clearFinishedPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clearFinishedPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":221
 *         .. note:: does not free the partialdecs themselves.
 *         """
 *         self.thisptr.clearFinishedPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def createConssAdjacency(self):
 */
  try {
    __pyx_v_self->thisptr->clearFinishedPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 221, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":216
 *         self.thisptr.clearCurrentPartialdecs()
 * 
 *     def clearFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears finished partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.clearFinishedPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":223
 *         self.thisptr.clearFinishedPartialdecs()
 * 
 *     def createConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """creates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency, "DetProbData.createConssAdjacency(self)\ncreates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency = {"createConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createConssAdjacency (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("createConssAdjacency", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "createConssAdjacency", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createConssAdjacency", 1);

  /* "src/pygcgopt/detprobdata.pxi":226
 *         """creates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common
 *         """
 *         self.thisptr.createConssAdjacency()             # <<<<<<<<<<<<<<
 * 
 *     def freeTemporaryData(self):
 */
  try {
    __pyx_v_self->thisptr->createConssAdjacency();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 226, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":223
 *         self.thisptr.clearFinishedPartialdecs()
 * 
 *     def createConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """creates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.createConssAdjacency", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":228
 *         self.thisptr.createConssAdjacency()
 * 
 *     def freeTemporaryData(self):             # <<<<<<<<<<<<<<
 *         """frees temporary data that is only needed during the detection process
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData, "DetProbData.freeTemporaryData(self)\nfrees temporary data that is only needed during the detection process\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData = {"freeTemporaryData", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeTemporaryData (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("freeTemporaryData", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "freeTemporaryData", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("freeTemporaryData", 1);

  /* "src/pygcgopt/detprobdata.pxi":231
 *         """frees temporary data that is only needed during the detection process
 *         """
 *         self.thisptr.freeTemporaryData()             # <<<<<<<<<<<<<<
 * 
 *     def getAncestorPartialdec(self, partialdecindex):
 */
  try {
    __pyx_v_self->thisptr->freeTemporaryData();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 231, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":228
 *         self.thisptr.createConssAdjacency()
 * 
 *     def freeTemporaryData(self):             # <<<<<<<<<<<<<<
 *         """frees temporary data that is only needed during the detection process
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.freeTemporaryData", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":233
 *         self.thisptr.freeTemporaryData()
 * 
 *     def getAncestorPartialdec(self, partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from ancestor partialdec data structure with given index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec, "DetProbData.getAncestorPartialdec(self, partialdecindex)\nreturns a partialdec from ancestor partialdec data structure with given index\n\n        :param partialdecindex: index of the partialdec\n        :type partialdecindex: int\n        :return: partialdec from ancestor partialdec\n        :rtype: :class:`PartialDecomposition`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec = {"getAncestorPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_partialdecindex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getAncestorPartialdec (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdecindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdecindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 233, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getAncestorPartialdec") < 0)) __PYX_ERR(9, 233, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdecindex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getAncestorPartialdec", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 233, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getAncestorPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdecindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partialdecindex) {
  gcg::PARTIALDECOMP *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::PARTIALDECOMP *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getAncestorPartialdec", 1);

  /* "src/pygcgopt/detprobdata.pxi":241
 *         :rtype: :class:`PartialDecomposition`
 *         """
 *         cdef PARTIALDECOMP* result = self.thisptr.getAncestorPartialdec(partialdecindex)             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(result)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_partialdecindex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 241, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getAncestorPartialdec(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 241, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_2;

  /* "src/pygcgopt/detprobdata.pxi":242
 *         """
 *         cdef PARTIALDECOMP* result = self.thisptr.getAncestorPartialdec(partialdecindex)
 *         return PartialDecomposition.create(result)             # <<<<<<<<<<<<<<
 * 
 *     def getConsPartition(self, partitionIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":233
 *         self.thisptr.freeTemporaryData()
 * 
 *     def getAncestorPartialdec(self, partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from ancestor partialdec data structure with given index
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getAncestorPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":244
 *         return PartialDecomposition.create(result)
 * 
 *     def getConsPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns a constraint partition
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_59getConsPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_58getConsPartition, "DetProbData.getConsPartition(self, partitionIndex)\nreturns a constraint partition\n\n        :param partitionIndex: index of a constraint partition\n        :type partitionIndex: int\n        :return: constraint partition object\n        :rtype: :class:`ConsPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_59getConsPartition = {"getConsPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_59getConsPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_58getConsPartition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_59getConsPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_partitionIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConsPartition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partitionIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partitionIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 244, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getConsPartition") < 0)) __PYX_ERR(9, 244, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partitionIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getConsPartition", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 244, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConsPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_58getConsPartition(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partitionIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_58getConsPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partitionIndex) {
  gcg::ConsPartition *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::ConsPartition *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConsPartition", 1);

  /* "src/pygcgopt/detprobdata.pxi":252
 *         :rtype: :class:`ConsPart`
 *         """
 *         cdef ConsPartition* result = self.thisptr.getConsPartition(partitionIndex)             # <<<<<<<<<<<<<<
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_partitionIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 252, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getConsPartition(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 252, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_2;

  /* "src/pygcgopt/detprobdata.pxi":253
 *         """
 *         cdef ConsPartition* result = self.thisptr.getConsPartition(partitionIndex)
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))             # <<<<<<<<<<<<<<
 * 
 *     def getConsPartitions(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_weakref); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_proxy); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_8ConsPart_create(__pyx_v_result, ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_t_3)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":244
 *         return PartialDecomposition.create(result)
 * 
 *     def getConsPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns a constraint partition
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConsPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":255
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))
 * 
 *     def getConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored constraint partitions
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_61getConsPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_60getConsPartitions, "DetProbData.getConsPartitions(self)\nreturns list to stored constraint partitions\n\n        :return: list to stored constraint partitions\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_61getConsPartitions = {"getConsPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_61getConsPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_60getConsPartitions};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_61getConsPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConsPartitions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getConsPartitions", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getConsPartitions", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_60getConsPartitions(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_60getConsPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_v_nconsparts = 0;
  PyObject *__pyx_9genexpr11__pyx_v_r = NULL;
  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;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  gcg::ConsPartition *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConsPartitions", 1);

  /* "src/pygcgopt/detprobdata.pxi":261
 *         :rtype: list
 *         """
 *         cdef nconsparts = self.thisptr.getNConsPartitions()             # <<<<<<<<<<<<<<
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNConsPartitions();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 261, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_nconsparts = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/pygcgopt/detprobdata.pxi":262
 *         """
 *         cdef nconsparts = self.thisptr.getNConsPartitions()
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]             # <<<<<<<<<<<<<<
 * 
 *     def getCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 262, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nconsparts); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 262, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_3);
    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_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 262, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 262, __pyx_L5_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 262, __pyx_L5_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(9, 262, __pyx_L5_error)
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 262, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 262, __pyx_L5_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(9, 262, __pyx_L5_error)
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 262, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_6(__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(9, 262, __pyx_L5_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_r, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_9genexpr11__pyx_v_r); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 262, __pyx_L5_error)
      try {
        __pyx_t_7 = __pyx_v_self->thisptr->getConsPartition(__pyx_t_1);
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(9, 262, __pyx_L5_error)
      }
      __pyx_t_3 = __pyx_f_8pygcgopt_3gcg_8ConsPart_create(__pyx_t_7, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 262, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(9, 262, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r); __pyx_9genexpr11__pyx_v_r = 0;
    goto __pyx_L9_exit_scope;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r); __pyx_9genexpr11__pyx_v_r = 0;
    goto __pyx_L1_error;
    __pyx_L9_exit_scope:;
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":255
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))
 * 
 *     def getConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored constraint partitions
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConsPartitions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_nconsparts);
  __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_r);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":264
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]
 * 
 *     def getCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns constraint related to a constraint index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_63getCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_62getCons, "DetProbData.getCons(self, consIndex)\nreturns constraint related to a constraint index\n\n        :param consIndex: index of a constraint\n        :type consIndex: int\n        :return: constraint related to a constraint index\n        :rtype: :class:`Constraint`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_63getCons = {"getCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_63getCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_62getCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_63getCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 264, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getCons") < 0)) __PYX_ERR(9, 264, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 264, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_62getCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_62getCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  SCIP_CONS *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":272
 *         :rtype: :class:`Constraint`
 *         """
 *         return Constraint.create(self.thisptr.getCons(consIndex))             # <<<<<<<<<<<<<<
 * 
 *     def getConssForCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 272, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 272, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":264
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]
 * 
 *     def getCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns constraint related to a constraint index
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":274
 *         return Constraint.create(self.thisptr.getCons(consIndex))
 * 
 *     def getConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns list of constraint indices that have a common variable with the given constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_65getConssForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_64getConssForCons, "DetProbData.getConssForCons(self, consIndex)\nreturns list of constraint indices that have a common variable with the given constraint\n\n        .. note:: constraint adjacency data structure has to initilized\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: list of constraint indices that have a common variable with the given constraint\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_65getConssForCons = {"getConssForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_65getConssForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_64getConssForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_65getConssForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConssForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 274, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getConssForCons") < 0)) __PYX_ERR(9, 274, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getConssForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 274, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConssForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_64getConssForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_64getConssForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  std::vector<int>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConssForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":284
 *         :rtype: list
 *         """
 *         return self.thisptr.getConssForCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getConssForVar(self, varIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 284, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getConssForCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 284, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":274
 *         return Constraint.create(self.thisptr.getCons(consIndex))
 * 
 *     def getConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns list of constraint indices that have a common variable with the given constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConssForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":286
 *         return self.thisptr.getConssForCons(consIndex)
 * 
 *     def getConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the constraint indices of the coefficient matrix for a variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_67getConssForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_66getConssForVar, "DetProbData.getConssForVar(self, varIndex)\nreturns the constraint indices of the coefficient matrix for a variable\n\n        :param varIndex: index of variable\n        :type varIndex: int\n        :return: list of constraint indices that have a nonzero entry with this variable\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_67getConssForVar = {"getConssForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_67getConssForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_66getConssForVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_67getConssForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getConssForVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 286, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getConssForVar") < 0)) __PYX_ERR(9, 286, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_varIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getConssForVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 286, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConssForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_66getConssForVar(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_varIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_66getConssForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  std::vector<int>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getConssForVar", 1);

  /* "src/pygcgopt/detprobdata.pxi":294
 *         :rtype: list
 *         """
 *         return self.thisptr.getConssForVar(varIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getOpenPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_varIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 294, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getConssForVar(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 294, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":286
 *         return self.thisptr.getConssForCons(consIndex)
 * 
 *     def getConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the constraint indices of the coefficient matrix for a variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getConssForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":296
 *         return self.thisptr.getConssForVar(varIndex)
 * 
 *     def getOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """determines all partialdecs from current (open) partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs, "DetProbData.getOpenPartialdecs(self)\ndetermines all partialdecs from current (open) partialdec data structure\n\n        :return: all partialdecs in current (open) partialdec data structure\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs = {"getOpenPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getOpenPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getOpenPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOpenPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<gcg::PARTIALDECOMP *>  __pyx_v_result;
  gcg::PARTIALDECOMP *__pyx_9genexpr12__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<gcg::PARTIALDECOMP *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<gcg::PARTIALDECOMP *> ::iterator __pyx_t_3;
  gcg::PARTIALDECOMP *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOpenPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":302
 *         :rtype: list
 *         """
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.getOpenPartialdecs()             # <<<<<<<<<<<<<<
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getOpenPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 302, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":303
 *         """
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.getOpenPartialdecs()
 *         return [PartialDecomposition.create(r) for r in result]             # <<<<<<<<<<<<<<
 * 
 *     def getFinishedPartialdec(self, int partialdecindex):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr12__pyx_v_r = __pyx_t_4;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_9genexpr12__pyx_v_r); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 303, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":296
 *         return self.thisptr.getConssForVar(varIndex)
 * 
 *     def getOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """determines all partialdecs from current (open) partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getOpenPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":305
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getFinishedPartialdec(self, int partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from finished partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec, "DetProbData.getFinishedPartialdec(self, int partialdecindex)\nreturns a partialdec from finished partialdec data structure\n\n        :param partialdecindex: index of partialdec\n        :type partialdecindex: int\n        :return: partialdec from finished partialdec data structure\n        :rtype: :class:`PartialDecomposition`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec = {"getFinishedPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_partialdecindex;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getFinishedPartialdec (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdecindex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdecindex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 305, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getFinishedPartialdec") < 0)) __PYX_ERR(9, 305, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdecindex = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_partialdecindex == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 305, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getFinishedPartialdec", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 305, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getFinishedPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdecindex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, int __pyx_v_partialdecindex) {
  gcg::PARTIALDECOMP *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getFinishedPartialdec", 1);

  /* "src/pygcgopt/detprobdata.pxi":313
 *         :rtype: :class:`PartialDecomposition`
 *         """
 *         cdef PARTIALDECOMP* result = self.thisptr.getFinishedPartialdec(partialdecindex)             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(result)
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getFinishedPartialdec(__pyx_v_partialdecindex);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 313, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":314
 *         """
 *         cdef PARTIALDECOMP* result = self.thisptr.getFinishedPartialdec(partialdecindex)
 *         return PartialDecomposition.create(result)             # <<<<<<<<<<<<<<
 * 
 *     def getFinishedPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":305
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getFinishedPartialdec(self, int partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from finished partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getFinishedPartialdec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":316
 *         return PartialDecomposition.create(result)
 * 
 *     def getFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """gets all finished partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs, "DetProbData.getFinishedPartialdecs(self)\ngets all finished partialdecs\n\n        :return: all finished partialdecs\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs = {"getFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getFinishedPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getFinishedPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getFinishedPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<gcg::PARTIALDECOMP *>  __pyx_v_result;
  gcg::PARTIALDECOMP *__pyx_9genexpr13__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<gcg::PARTIALDECOMP *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<gcg::PARTIALDECOMP *> ::iterator __pyx_t_3;
  gcg::PARTIALDECOMP *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getFinishedPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":322
 *         :rtype: list
 *         """
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.getFinishedPartialdecs()             # <<<<<<<<<<<<<<
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getFinishedPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 322, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":323
 *         """
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.getFinishedPartialdecs()
 *         return [PartialDecomposition.create(r) for r in result]             # <<<<<<<<<<<<<<
 * 
 *     def getIndexForCons(self, Constraint cons):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr13__pyx_v_r = __pyx_t_4;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_9genexpr13__pyx_v_r); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 323, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":316
 *         return PartialDecomposition.create(result)
 * 
 *     def getFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """gets all finished partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getFinishedPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":325
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getIndexForCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the constraint index related to a constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_75getIndexForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_74getIndexForCons, "DetProbData.getIndexForCons(self, Constraint cons)\nreturns the constraint index related to a constraint\n\n        :param cons: constraint the index is asked for\n        :type cons: :class:`Constraint`\n        :return: the constraint index related to constraint\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_75getIndexForCons = {"getIndexForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_75getIndexForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_74getIndexForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_75getIndexForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getIndexForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cons,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cons)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 325, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getIndexForCons") < 0)) __PYX_ERR(9, 325, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_cons = ((struct __pyx_obj_9pyscipopt_4scip_Constraint *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getIndexForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 325, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getIndexForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cons), __pyx_ptype_9pyscipopt_4scip_Constraint, 1, "cons", 0))) __PYX_ERR(9, 325, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_74getIndexForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_cons);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_74getIndexForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Constraint *__pyx_v_cons) {
  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("getIndexForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":333
 *         :rtype: int
 *         """
 *         return self.thisptr.getIndexForCons(cons.scip_cons)             # <<<<<<<<<<<<<<
 * 
 *     def getIndexForVar(self, Variable var):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getIndexForCons(__pyx_v_cons->scip_cons);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 333, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":325
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getIndexForCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the constraint index related to a constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getIndexForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":335
 *         return self.thisptr.getIndexForCons(cons.scip_cons)
 * 
 *     def getIndexForVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the variable index related to a variable
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_77getIndexForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_76getIndexForVar, "DetProbData.getIndexForVar(self, Variable var)\nreturns the variable index related to a variable\n\n        :param var: variable the index is asked for\n        :type var: :class:`Variable`\n        :return: the variable index related to variable\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_77getIndexForVar = {"getIndexForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_77getIndexForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_76getIndexForVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_77getIndexForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getIndexForVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 335, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getIndexForVar") < 0)) __PYX_ERR(9, 335, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getIndexForVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getIndexForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), __pyx_ptype_9pyscipopt_4scip_Variable, 1, "var", 0))) __PYX_ERR(9, 335, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_76getIndexForVar(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_76getIndexForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_var) {
  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("getIndexForVar", 1);

  /* "src/pygcgopt/detprobdata.pxi":343
 *         :rtype: int
 *         """
 *         return self.thisptr.getIndexForVar(var.scip_var)             # <<<<<<<<<<<<<<
 * 
 *     def getNAncestorPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getIndexForVar(__pyx_v_var->scip_var);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 343, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":335
 *         return self.thisptr.getIndexForCons(cons.scip_cons)
 * 
 *     def getIndexForVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the variable index related to a variable
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getIndexForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":345
 *         return self.thisptr.getIndexForVar(var.scip_var)
 * 
 *     def getNAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of ancestor partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs, "DetProbData.getNAncestorPartialdecs(self)\nreturns size of ancestor partialdec data structure\n\n        :return: size of ancestor partialdec data structure\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs = {"getNAncestorPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNAncestorPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNAncestorPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNAncestorPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNAncestorPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":351
 *         :rtype: int
 *         """
 *         return self.thisptr.getNAncestorPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def getNConsPartitions(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNAncestorPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 351, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":345
 *         return self.thisptr.getIndexForVar(var.scip_var)
 * 
 *     def getNAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of ancestor partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNAncestorPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":353
 *         return self.thisptr.getNAncestorPartialdecs()
 * 
 *     def getNConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different constraint partitions
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions, "DetProbData.getNConsPartitions(self)\nreturns number of different constraint partitions\n\n        :return: number of different constraint partitions\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions = {"getNConsPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConsPartitions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConsPartitions", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConsPartitions", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNConsPartitions", 1);

  /* "src/pygcgopt/detprobdata.pxi":359
 *         :rtype: int
 *         """
 *         return self.thisptr.getNConsPartitions()             # <<<<<<<<<<<<<<
 * 
 *     def getNConss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNConsPartitions();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 359, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":353
 *         return self.thisptr.getNAncestorPartialdecs()
 * 
 *     def getNConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different constraint partitions
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConsPartitions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":361
 *         return self.thisptr.getNConsPartitions()
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables considered in the detprobdata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_83getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_82getNConss, "DetProbData.getNConss(self)\nreturns the number of variables considered in the detprobdata\n\n        :return: number of variables considered in the detprobdata\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_83getNConss = {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_83getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_82getNConss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_83getNConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_82getNConss(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_82getNConss(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNConss", 1);

  /* "src/pygcgopt/detprobdata.pxi":367
 *         :rtype: int
 *         """
 *         return self.thisptr.getNConss()             # <<<<<<<<<<<<<<
 * 
 *     def getNConssForCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNConss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 367, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":361
 *         return self.thisptr.getNConsPartitions()
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables considered in the detprobdata
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":369
 *         return self.thisptr.getNConss()
 * 
 *     def getNConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given constraint index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_85getNConssForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_84getNConssForCons, "DetProbData.getNConssForCons(self, consIndex)\nreturns the number of constraints for a given constraint index\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: the number of constraints for a given constraint index\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_85getNConssForCons = {"getNConssForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_85getNConssForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_84getNConssForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_85getNConssForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConssForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 369, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNConssForCons") < 0)) __PYX_ERR(9, 369, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNConssForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConssForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_84getNConssForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_84getNConssForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  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("getNConssForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":377
 *         :rtype: int
 *         """
 *         return self.thisptr.getNConssForCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getNConssForVar(self, varIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 377, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getNConssForCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 377, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":369
 *         return self.thisptr.getNConss()
 * 
 *     def getNConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given constraint index
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConssForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":379
 *         return self.thisptr.getNConssForCons(consIndex)
 * 
 *     def getNConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given variable index where the variable has a nonzero entry in
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_87getNConssForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_86getNConssForVar, "DetProbData.getNConssForVar(self, varIndex)\nreturns the number of constraints for a given variable index where the variable has a nonzero entry in\n\n        :param varIndex: index of variable\n        :type varIndex: int\n        :return: the number of constraints for a given variable\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_87getNConssForVar = {"getNConssForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_87getNConssForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_86getNConssForVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_87getNConssForVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConssForVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 379, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNConssForVar") < 0)) __PYX_ERR(9, 379, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_varIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNConssForVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 379, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConssForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_86getNConssForVar(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_varIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_86getNConssForVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex) {
  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("getNConssForVar", 1);

  /* "src/pygcgopt/detprobdata.pxi":387
 *         :rtype: int
 *         """
 *         return self.thisptr.getNConssForVar(varIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getNOpenPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_varIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 387, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getNConssForVar(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 387, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":379
 *         return self.thisptr.getNConssForCons(consIndex)
 * 
 *     def getNConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given variable index where the variable has a nonzero entry in
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNConssForVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":389
 *         return self.thisptr.getNConssForVar(varIndex)
 * 
 *     def getNOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of current (open) partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs, "DetProbData.getNOpenPartialdecs(self)\nreturns size of current (open) partialdec data structure\n\n        :return: size of current (open) partialdec data structure\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs = {"getNOpenPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNOpenPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNOpenPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNOpenPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNOpenPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":395
 *         :rtype: int
 *         """
 *         return self.thisptr.getNOpenPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def getNFinishedPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNOpenPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 395, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":389
 *         return self.thisptr.getNConssForVar(varIndex)
 * 
 *     def getNOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of current (open) partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNOpenPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":397
 *         return self.thisptr.getNOpenPartialdecs()
 * 
 *     def getNFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """size of finished partialdec data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs, "DetProbData.getNFinishedPartialdecs(self)\nsize of finished partialdec data structure\n\n        :return: size of finished partialdec data structure\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs = {"getNFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNFinishedPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNFinishedPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNFinishedPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNFinishedPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":403
 *         :rtype: int
 *         """
 *         return self.thisptr.getNFinishedPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def getNPartialdecs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNFinishedPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 403, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":397
 *         return self.thisptr.getNOpenPartialdecs()
 * 
 *     def getNFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """size of finished partialdec data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNFinishedPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":405
 *         return self.thisptr.getNFinishedPartialdecs()
 * 
 *     def getNPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns the number of stored partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs, "DetProbData.getNPartialdecs(self)\nreturns the number of stored partialdecs\n\n        :return: number of stored partialdecs\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs = {"getNPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNPartialdecs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNPartialdecs", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":411
 *         :rtype: int
 *         """
 *         return self.thisptr.getNPartialdecs()             # <<<<<<<<<<<<<<
 * 
 *     def getNNonzeros(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNPartialdecs();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 411, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":405
 *         return self.thisptr.getNFinishedPartialdecs()
 * 
 *     def getNPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns the number of stored partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":413
 *         return self.thisptr.getNPartialdecs()
 * 
 *     def getNNonzeros(self):             # <<<<<<<<<<<<<<
 *         """returns the number of nonzero entries in the coefficient matrix
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_95getNNonzeros(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_94getNNonzeros, "DetProbData.getNNonzeros(self)\nreturns the number of nonzero entries in the coefficient matrix\n\n        :return: the number of nonzero entries in the coefficient matrix\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_95getNNonzeros = {"getNNonzeros", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_95getNNonzeros, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_94getNNonzeros};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_95getNNonzeros(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNNonzeros (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNNonzeros", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNNonzeros", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_94getNNonzeros(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_94getNNonzeros(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNNonzeros", 1);

  /* "src/pygcgopt/detprobdata.pxi":419
 *         :rtype: int
 *         """
 *         return self.thisptr.getNNonzeros()             # <<<<<<<<<<<<<<
 * 
 *     def getNVarPartitions(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNNonzeros();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 419, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":413
 *         return self.thisptr.getNPartialdecs()
 * 
 *     def getNNonzeros(self):             # <<<<<<<<<<<<<<
 *         """returns the number of nonzero entries in the coefficient matrix
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNNonzeros", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":421
 *         return self.thisptr.getNNonzeros()
 * 
 *     def getNVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different variable partitions
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions, "DetProbData.getNVarPartitions(self)\nreturns number of different variable partitions\n\n        :return: number of different variable partitions\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions = {"getNVarPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarPartitions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVarPartitions", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVarPartitions", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNVarPartitions", 1);

  /* "src/pygcgopt/detprobdata.pxi":427
 *         :rtype: int
 *         """
 *         return self.thisptr.getNVarPartitions()             # <<<<<<<<<<<<<<
 * 
 *     def getNVars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNVarPartitions();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 427, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":421
 *         return self.thisptr.getNNonzeros()
 * 
 *     def getNVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different variable partitions
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNVarPartitions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":429
 *         return self.thisptr.getNVarPartitions()
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """return the number of variables considered in the detprobdata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_99getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_98getNVars, "DetProbData.getNVars(self)\nreturn the number of variables considered in the detprobdata\n\n        :return: the number of variables considered in the detprobdata\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_99getNVars = {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_99getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_98getNVars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_99getNVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_98getNVars(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_98getNVars(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  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("getNVars", 1);

  /* "src/pygcgopt/detprobdata.pxi":435
 *         :rtype: int
 *         """
 *         return self.thisptr.getNVars()             # <<<<<<<<<<<<<<
 * 
 *     def getNVarsForCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getNVars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 435, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":429
 *         return self.thisptr.getNVarPartitions()
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """return the number of variables considered in the detprobdata
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNVars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":437
 *         return self.thisptr.getNVars()
 * 
 *     def getNVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of variables for a given constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons, "DetProbData.getNVarsForCons(self, consIndex)\nreturns the number of variables for a given constraint\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: the number of variables for a given constraint\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons = {"getNVarsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarsForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 437, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getNVarsForCons") < 0)) __PYX_ERR(9, 437, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getNVarsForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 437, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNVarsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  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("getNVarsForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":445
 *         :rtype: int
 *         """
 *         return self.thisptr.getNVarsForCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getOrigVarsFixedZero(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 445, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getNVarsForCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 445, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":437
 *         return self.thisptr.getNVars()
 * 
 *     def getNVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of variables for a given constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getNVarsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":447
 *         return self.thisptr.getNVarsForCons(consIndex)
 * 
 *     def getOrigVarsFixedZero(self):             # <<<<<<<<<<<<<<
 *         """returns list of all original variables that are fixed to zero
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero, "DetProbData.getOrigVarsFixedZero(self)\nreturns list of all original variables that are fixed to zero\n\n        :return: list of variables\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero = {"getOrigVarsFixedZero", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getOrigVarsFixedZero (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getOrigVarsFixedZero", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getOrigVarsFixedZero", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<SCIP_VAR *>  __pyx_v_result;
  SCIP_VAR *__pyx_9genexpr14__pyx_v_v;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<SCIP_VAR *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<SCIP_VAR *> ::iterator __pyx_t_3;
  SCIP_VAR *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOrigVarsFixedZero", 1);

  /* "src/pygcgopt/detprobdata.pxi":453
 *         :rtype: list
 *         """
 *         cdef vector[SCIP_VAR*] result = self.thisptr.getOrigVarsFixedZero()             # <<<<<<<<<<<<<<
 *         return [Variable.create(v) for v in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getOrigVarsFixedZero();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 453, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":454
 *         """
 *         cdef vector[SCIP_VAR*] result = self.thisptr.getOrigVarsFixedZero()
 *         return [Variable.create(v) for v in result]             # <<<<<<<<<<<<<<
 * 
 *     def getRelevantConss(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr14__pyx_v_v = __pyx_t_4;
      __pyx_t_5 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_9genexpr14__pyx_v_v); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 454, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":447
 *         return self.thisptr.getNVarsForCons(consIndex)
 * 
 *     def getOrigVarsFixedZero(self):             # <<<<<<<<<<<<<<
 *         """returns list of all original variables that are fixed to zero
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getOrigVarsFixedZero", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":456
 *         return [Variable.create(v) for v in result]
 * 
 *     def getRelevantConss(self):             # <<<<<<<<<<<<<<
 *         """returns list of all constraints that are not marked as deleted or obsolete
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_105getRelevantConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_104getRelevantConss, "DetProbData.getRelevantConss(self)\nreturns list of all constraints that are not marked as deleted or obsolete\n\n        :return: list of constraints\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_105getRelevantConss = {"getRelevantConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_105getRelevantConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_104getRelevantConss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_105getRelevantConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getRelevantConss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getRelevantConss", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getRelevantConss", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_104getRelevantConss(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_104getRelevantConss(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<SCIP_CONS *>  __pyx_v_result;
  SCIP_CONS *__pyx_9genexpr15__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<SCIP_CONS *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<SCIP_CONS *> ::iterator __pyx_t_3;
  SCIP_CONS *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getRelevantConss", 1);

  /* "src/pygcgopt/detprobdata.pxi":462
 *         :rtype: list
 *         """
 *         cdef vector[SCIP_CONS*] result = self.thisptr.getRelevantConss()             # <<<<<<<<<<<<<<
 *         return [Constraint.create(c) for c in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getRelevantConss();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 462, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":463
 *         """
 *         cdef vector[SCIP_CONS*] result = self.thisptr.getRelevantConss()
 *         return [Constraint.create(c) for c in result]             # <<<<<<<<<<<<<<
 * 
 *     def getRelevantVars(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr15__pyx_v_c = __pyx_t_4;
      __pyx_t_5 = __pyx_vtabptr_9pyscipopt_4scip_Constraint->create(__pyx_9genexpr15__pyx_v_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 463, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 463, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":456
 *         return [Variable.create(v) for v in result]
 * 
 *     def getRelevantConss(self):             # <<<<<<<<<<<<<<
 *         """returns list of all constraints that are not marked as deleted or obsolete
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getRelevantConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":465
 *         return [Constraint.create(c) for c in result]
 * 
 *     def getRelevantVars(self):             # <<<<<<<<<<<<<<
 *         """returns list of all problem variables that are not fixed to 0
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_107getRelevantVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_106getRelevantVars, "DetProbData.getRelevantVars(self)\nreturns list of all problem variables that are not fixed to 0\n\n        :return: list of variables\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_107getRelevantVars = {"getRelevantVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_107getRelevantVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_106getRelevantVars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_107getRelevantVars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getRelevantVars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getRelevantVars", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getRelevantVars", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_106getRelevantVars(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_106getRelevantVars(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<SCIP_VAR *>  __pyx_v_result;
  SCIP_VAR *__pyx_9genexpr16__pyx_v_v;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<SCIP_VAR *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<SCIP_VAR *> ::iterator __pyx_t_3;
  SCIP_VAR *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getRelevantVars", 1);

  /* "src/pygcgopt/detprobdata.pxi":471
 *         :rtype: list
 *         """
 *         cdef vector[SCIP_VAR *] result = self.thisptr.getRelevantVars()             # <<<<<<<<<<<<<<
 *         return [Variable.create(v) for v in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getRelevantVars();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 471, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":472
 *         """
 *         cdef vector[SCIP_VAR *] result = self.thisptr.getRelevantVars()
 *         return [Variable.create(v) for v in result]             # <<<<<<<<<<<<<<
 * 
 *     def getModel(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr16__pyx_v_v = __pyx_t_4;
      __pyx_t_5 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_9genexpr16__pyx_v_v); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 472, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 472, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":465
 *         return [Constraint.create(c) for c in result]
 * 
 *     def getRelevantVars(self):             # <<<<<<<<<<<<<<
 *         """returns list of all problem variables that are not fixed to 0
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getRelevantVars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":474
 *         return [Variable.create(v) for v in result]
 * 
 *     def getModel(self):             # <<<<<<<<<<<<<<
 *         """returns the corresponding Model instance wrapping the scip data structure
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_109getModel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_108getModel, "DetProbData.getModel(self)\nreturns the corresponding Model instance wrapping the scip data structure\n\n        :return: the corresponding Model instance wrapping scip data structure\n        :rtype: :class:`pyscipopt.Model`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_109getModel = {"getModel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_109getModel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_108getModel};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_109getModel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getModel (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getModel", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getModel", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_108getModel(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_108getModel(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  SCIP *__pyx_v_scip;
  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("getModel", 1);

  /* "src/pygcgopt/detprobdata.pxi":480
 *         :rtype: :class:`pyscipopt.Model`
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()             # <<<<<<<<<<<<<<
 *         return SCIPModel.create(scip)
 * 
 */
  __pyx_v_scip = __pyx_v_self->thisptr->getScip();

  /* "src/pygcgopt/detprobdata.pxi":481
 *         """
 *         cdef SCIP* scip = self.thisptr.getScip()
 *         return SCIPModel.create(scip)             # <<<<<<<<<<<<<<
 * 
 *     def getSortedCandidatesNBlocks(self, object candidates):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_vtabptr_9pyscipopt_4scip_Model->create(__pyx_v_scip); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":474
 *         return [Variable.create(v) for v in result]
 * 
 *     def getModel(self):             # <<<<<<<<<<<<<<
 *         """returns the corresponding Model instance wrapping the scip data structure
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getModel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":483
 *         return SCIPModel.create(scip)
 * 
 *     def getSortedCandidatesNBlocks(self, object candidates):             # <<<<<<<<<<<<<<
 *         """gets the candidates for number of blocks added by the user followed by the found ones sorted in descending order by how often a candidate was proposed
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks, "DetProbData.getSortedCandidatesNBlocks(self, candidates)\ngets the candidates for number of blocks added by the user followed by the found ones sorted in descending order by how often a candidate was proposed\n\n        :param candidates: will contain the candidates for number of blocks sorted in descending order by how often a candidate was added\n        :type candidates: object\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks = {"getSortedCandidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_candidates = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getSortedCandidatesNBlocks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_candidates,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_candidates)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 483, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getSortedCandidatesNBlocks") < 0)) __PYX_ERR(9, 483, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_candidates = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getSortedCandidatesNBlocks", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 483, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getSortedCandidatesNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_candidates);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_candidates) {
  std::vector<int>  __pyx_v_cpp_candidates;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getSortedCandidatesNBlocks", 1);

  /* "src/pygcgopt/detprobdata.pxi":489
 *         :type candidates: object
 *         """
 *         cdef vector[int] cpp_candidates = candidates             # <<<<<<<<<<<<<<
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)
 * 
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_candidates); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 489, __pyx_L1_error)
  __pyx_v_cpp_candidates = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":490
 *         """
 *         cdef vector[int] cpp_candidates = candidates
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)             # <<<<<<<<<<<<<<
 * 
 *     def getVal(self, row, col):
 */
  try {
    __pyx_v_self->thisptr->getSortedCandidatesNBlocks(__pyx_v_cpp_candidates);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 490, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":483
 *         return SCIPModel.create(scip)
 * 
 *     def getSortedCandidatesNBlocks(self, object candidates):             # <<<<<<<<<<<<<<
 *         """gets the candidates for number of blocks added by the user followed by the found ones sorted in descending order by how often a candidate was proposed
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getSortedCandidatesNBlocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":492
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)
 * 
 *     def getVal(self, row, col):             # <<<<<<<<<<<<<<
 *         """returns a coefficient from the coefficient matrix
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_113getVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_112getVal, "DetProbData.getVal(self, row, col)\nreturns a coefficient from the coefficient matrix\n\n        :param row: index of the constraint to be considered\n        :type row: int\n        :param col: index of the variable to be considered\n        :type col: int\n        :return: a coefficient from the coefficient matrix\n        :rtype: double\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_113getVal = {"getVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_113getVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_112getVal};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_113getVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_col = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_col,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_row)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 492, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_col)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 492, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("getVal", 1, 2, 2, 1); __PYX_ERR(9, 492, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVal") < 0)) __PYX_ERR(9, 492, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_row = values[0];
    __pyx_v_col = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 492, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_112getVal(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_row, __pyx_v_col);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_112getVal(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  SCIP_Real __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVal", 1);

  /* "src/pygcgopt/detprobdata.pxi":502
 *         :rtype: double
 *         """
 *         return self.thisptr.getVal(row, col)             # <<<<<<<<<<<<<<
 * 
 *     def getValsForCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 502, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 502, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_v_self->thisptr->getVal(__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 502, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":492
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)
 * 
 *     def getVal(self, row, col):             # <<<<<<<<<<<<<<
 *         """returns a coefficient from the coefficient matrix
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":504
 *         return self.thisptr.getVal(row, col)
 * 
 *     def getValsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the nonzero coefficients of the coefficient matrix for a constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_115getValsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_114getValsForCons, "DetProbData.getValsForCons(self, consIndex)\nreturns the nonzero coefficients of the coefficient matrix for a constraint\n\n        .. note:: same order as in :meth:`getVarsForCons`\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: list of coefficients of in matrix for constraints\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_115getValsForCons = {"getValsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_115getValsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_114getValsForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_115getValsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getValsForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 504, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getValsForCons") < 0)) __PYX_ERR(9, 504, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getValsForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 504, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getValsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_114getValsForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_114getValsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  std::vector<SCIP_Real>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getValsForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":514
 *         :rtype: list
 *         """
 *         return self.thisptr.getValsForCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def getVarPartition(self, partitionIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 514, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getValsForCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 514, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_SCIP_Real(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":504
 *         return self.thisptr.getVal(row, col)
 * 
 *     def getValsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the nonzero coefficients of the coefficient matrix for a constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getValsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":516
 *         return self.thisptr.getValsForCons(consIndex)
 * 
 *     def getVarPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns variable partition with given index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_117getVarPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_116getVarPartition, "DetProbData.getVarPartition(self, partitionIndex)\nreturns variable partition with given index\n\n        :param partitionIndex: index of variable partition\n        :type partitionIndex: int\n        :return: variable partition with given index\n        :rtype: :class:`VarPart`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_117getVarPartition = {"getVarPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_117getVarPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_116getVarPartition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_117getVarPartition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_partitionIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVarPartition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partitionIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partitionIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 516, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVarPartition") < 0)) __PYX_ERR(9, 516, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partitionIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVarPartition", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 516, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVarPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_116getVarPartition(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partitionIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_116getVarPartition(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_partitionIndex) {
  gcg::VarPartition *__pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  gcg::VarPartition *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVarPartition", 1);

  /* "src/pygcgopt/detprobdata.pxi":524
 *         :rtype: :class:`VarPart`
 *         """
 *         cdef VarPartition* result = self.thisptr.getVarPartition(partitionIndex)             # <<<<<<<<<<<<<<
 *         return VarPart.create(result, self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_partitionIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 524, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getVarPartition(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 524, __pyx_L1_error)
  }
  __pyx_v_result = __pyx_t_2;

  /* "src/pygcgopt/detprobdata.pxi":525
 *         """
 *         cdef VarPartition* result = self.thisptr.getVarPartition(partitionIndex)
 *         return VarPart.create(result, self)             # <<<<<<<<<<<<<<
 * 
 *     def getVarPartitions(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_8pygcgopt_3gcg_7VarPart_create(__pyx_v_result, __pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":516
 *         return self.thisptr.getValsForCons(consIndex)
 * 
 *     def getVarPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns variable partition with given index
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVarPartition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":527
 *         return VarPart.create(result, self)
 * 
 *     def getVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored variable partitions
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_119getVarPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_118getVarPartitions, "DetProbData.getVarPartitions(self)\nreturns list to stored variable partitions\n\n        :return: list to stored variable partitions\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_119getVarPartitions = {"getVarPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_119getVarPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_118getVarPartitions};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_119getVarPartitions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVarPartitions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getVarPartitions", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getVarPartitions", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_118getVarPartitions(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_118getVarPartitions(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  std::vector<gcg::VarPartition *>  __pyx_v_result;
  gcg::VarPartition *__pyx_9genexpr17__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<gcg::VarPartition *>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::vector<gcg::VarPartition *> ::iterator __pyx_t_3;
  gcg::VarPartition *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVarPartitions", 1);

  /* "src/pygcgopt/detprobdata.pxi":533
 *         :rtype: list
 *         """
 *         cdef vector[VarPartition*] result = self.thisptr.getVarPartitions()             # <<<<<<<<<<<<<<
 *         return [VarPart.create(r, self) for r in result]
 * 
 */
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->getVarPartitions();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 533, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "src/pygcgopt/detprobdata.pxi":534
 *         """
 *         cdef vector[VarPartition*] result = self.thisptr.getVarPartitions()
 *         return [VarPart.create(r, self) for r in result]             # <<<<<<<<<<<<<<
 * 
 *     def getVar(self, varIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_3 != __pyx_v_result.end())) break;
      __pyx_t_4 = *__pyx_t_3;
      ++__pyx_t_3;
      __pyx_9genexpr17__pyx_v_r = __pyx_t_4;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_7VarPart_create(__pyx_9genexpr17__pyx_v_r, __pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 534, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 534, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":527
 *         return VarPart.create(result, self)
 * 
 *     def getVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored variable partitions
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVarPartitions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":536
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def getVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns variable related to a variable index
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_121getVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_120getVar, "DetProbData.getVar(self, varIndex)\nreturns variable related to a variable index\n\n        :return: variable related to a variable index\n        :rtype: :class:`Variable`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_121getVar = {"getVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_121getVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_120getVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_121getVar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 536, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVar") < 0)) __PYX_ERR(9, 536, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_varIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVar", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 536, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_120getVar(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_varIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_120getVar(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_varIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  SCIP_VAR *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVar", 1);

  /* "src/pygcgopt/detprobdata.pxi":542
 *         :rtype: :class:`Variable`
 *         """
 *         return Variable.create(self.thisptr.getVar(varIndex))             # <<<<<<<<<<<<<<
 * 
 *     def getVarsForCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_varIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 542, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getVar(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 542, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":536
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def getVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns variable related to a variable index
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":544
 *         return Variable.create(self.thisptr.getVar(varIndex))
 * 
 *     def getVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the variable indices of the coefficient matrix for a constraint
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_123getVarsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_122getVarsForCons, "DetProbData.getVarsForCons(self, consIndex)\nreturns the variable indices of the coefficient matrix for a constraint\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: list of the variable indices of the coefficient matrix for a constraint\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_123getVarsForCons = {"getVarsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_123getVarsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_122getVarsForCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_123getVarsForCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getVarsForCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 544, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getVarsForCons") < 0)) __PYX_ERR(9, 544, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getVarsForCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 544, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVarsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_122getVarsForCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_122getVarsForCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  std::vector<int>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getVarsForCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":552
 *         :rtype: list
 *         """
 *         return self.thisptr.getVarsForCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def isConsCardinalityCons(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 552, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->getVarsForCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 552, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_vector_to_py_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":544
 *         return Variable.create(self.thisptr.getVar(varIndex))
 * 
 *     def getVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the variable indices of the coefficient matrix for a constraint
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.getVarsForCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":554
 *         return self.thisptr.getVarsForCons(consIndex)
 * 
 *     def isConsCardinalityCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is a cardinality constraint, i.e. of the .. math::`\\sum_{i} x_i = b`
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons, "DetProbData.isConsCardinalityCons(self, consIndex)\nreturns whether a constraint is a cardinality constraint, i.e. of the .. math::`\\sum_{i} x_i = b`\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: returns whether a constraint is a cardinality constraint\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons = {"isConsCardinalityCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsCardinalityCons (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 554, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsCardinalityCons") < 0)) __PYX_ERR(9, 554, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsCardinalityCons", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 554, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsCardinalityCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsCardinalityCons", 1);

  /* "src/pygcgopt/detprobdata.pxi":562
 *         :rtype: bool
 *         """
 *         return self.thisptr.isConsCardinalityCons(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def isConssAdjInitialized(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 562, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->isConsCardinalityCons(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 562, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":554
 *         return self.thisptr.getVarsForCons(consIndex)
 * 
 *     def isConsCardinalityCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is a cardinality constraint, i.e. of the .. math::`\\sum_{i} x_i = b`
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsCardinalityCons", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":564
 *         return self.thisptr.isConsCardinalityCons(consIndex)
 * 
 *     def isConssAdjInitialized(self):             # <<<<<<<<<<<<<<
 *         """determines whether or not the constraint-constraint adjacency data structure is initilized
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized, "DetProbData.isConssAdjInitialized(self)\ndetermines whether or not the constraint-constraint adjacency data structure is initilized\n\n        :return: True iff the constraint-constraint adjacency data structure is initilized\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized = {"isConssAdjInitialized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConssAdjInitialized (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("isConssAdjInitialized", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isConssAdjInitialized", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  SCIP_Bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConssAdjInitialized", 1);

  /* "src/pygcgopt/detprobdata.pxi":570
 *         :rtype: bool
 *         """
 *         return self.thisptr.isConssAdjInitialized()             # <<<<<<<<<<<<<<
 * 
 *     def isConsSetpp(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isConssAdjInitialized();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 570, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":564
 *         return self.thisptr.isConsCardinalityCons(consIndex)
 * 
 *     def isConssAdjInitialized(self):             # <<<<<<<<<<<<<<
 *         """determines whether or not the constraint-constraint adjacency data structure is initilized
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConssAdjInitialized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":572
 *         return self.thisptr.isConssAdjInitialized()
 * 
 *     def isConsSetpp(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified indec partitioning, or packing covering constraint?
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_129isConsSetpp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_128isConsSetpp, "DetProbData.isConsSetpp(self, consIndex)\nis cons with specified indec partitioning, or packing covering constraint?\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: is constraint with specified index partitioning or packing covering constraint\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_129isConsSetpp = {"isConsSetpp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_129isConsSetpp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_128isConsSetpp};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_129isConsSetpp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsSetpp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 572, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsSetpp") < 0)) __PYX_ERR(9, 572, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsSetpp", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 572, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsSetpp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_128isConsSetpp(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_128isConsSetpp(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsSetpp", 1);

  /* "src/pygcgopt/detprobdata.pxi":580
 *         :rtype: bool
 *         """
 *         return self.thisptr.isConsSetpp(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def isConsSetppc(self, consIndex):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 580, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->isConsSetpp(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 580, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":572
 *         return self.thisptr.isConssAdjInitialized()
 * 
 *     def isConsSetpp(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified indec partitioning, or packing covering constraint?
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsSetpp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":582
 *         return self.thisptr.isConsSetpp(consIndex)
 * 
 *     def isConsSetppc(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified index partitioning packing, or covering constraint?
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_131isConsSetppc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_130isConsSetppc, "DetProbData.isConsSetppc(self, consIndex)\nis cons with specified index partitioning packing, or covering constraint?\n\n        :param consIndex: index of constraint\n        :type consIndex: int\n        :return: whether a constraint is partitioning packing, or covering constraint?\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_131isConsSetppc = {"isConsSetppc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_131isConsSetppc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_130isConsSetppc};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_131isConsSetppc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_consIndex = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isConsSetppc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consIndex,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consIndex)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 582, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isConsSetppc") < 0)) __PYX_ERR(9, 582, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_consIndex = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isConsSetppc", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 582, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsSetppc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_130isConsSetppc(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_consIndex);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_130isConsSetppc(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, PyObject *__pyx_v_consIndex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isConsSetppc", 1);

  /* "src/pygcgopt/detprobdata.pxi":590
 *         :rtype: bool
 *         """
 *         return self.thisptr.isConsSetppc(consIndex)             # <<<<<<<<<<<<<<
 * 
 *     def isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_consIndex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 590, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->isConsSetppc(__pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 590, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":582
 *         return self.thisptr.isConsSetpp(consIndex)
 * 
 *     def isConsSetppc(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified index partitioning packing, or covering constraint?
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isConsSetppc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":592
 *         return self.thisptr.isConsSetppc(consIndex)
 * 
 *     def isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """checks if partialdec is a duplicate of an existing finished partialdec
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished, "DetProbData.isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec)\nchecks if partialdec is a duplicate of an existing finished partialdec\n\n        :param partialdec: partialdec to be checked\n        :type partialdec: :class:`PartialDecomposition`\n        :return: True iff partialdec is a duplicate of an existing finished partialdec\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished = {"isPartialdecDuplicateofFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isPartialdecDuplicateofFinished (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 592, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isPartialdecDuplicateofFinished") < 0)) __PYX_ERR(9, 592, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isPartialdecDuplicateofFinished", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 592, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isPartialdecDuplicateofFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(9, 592, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_partialdec;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  SCIP_Bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isPartialdecDuplicateofFinished", 1);

  /* "src/pygcgopt/detprobdata.pxi":600
 *         :rtype: bool
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr             # <<<<<<<<<<<<<<
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)
 * 
 */
  __pyx_t_1 = __pyx_v_partialdec->thisptr;
  __pyx_v_cpp_partialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":601
 *         """
 *         cdef PARTIALDECOMP* cpp_partialdec = partialdec.thisptr
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def isAssignedToOrigProb(self):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_2 = __pyx_v_self->thisptr->isPartialdecDuplicateofFinished(__pyx_v_cpp_partialdec);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 601, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":592
 *         return self.thisptr.isConsSetppc(consIndex)
 * 
 *     def isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """checks if partialdec is a duplicate of an existing finished partialdec
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isPartialdecDuplicateofFinished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":603
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """returns True if the matrix structure corresponds to the presolved problem
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb, "DetProbData.isAssignedToOrigProb(self)\nreturns True if the matrix structure corresponds to the presolved problem\n\n        :return: True if the matrix structure corresponds to the presolved problem\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb = {"isAssignedToOrigProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isAssignedToOrigProb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("isAssignedToOrigProb", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "isAssignedToOrigProb", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  SCIP_Bool __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isAssignedToOrigProb", 1);

  /* "src/pygcgopt/detprobdata.pxi":609
 *         :rtype: bool
 *         """
 *         return self.thisptr.isAssignedToOrigProb()             # <<<<<<<<<<<<<<
 * 
 *     def partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, object partialdecs, sort):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_self->thisptr->isAssignedToOrigProb();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 609, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":603
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """returns True if the matrix structure corresponds to the presolved problem
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.isAssignedToOrigProb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":611
 *         return self.thisptr.isAssignedToOrigProb()
 * 
 *     def partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, object partialdecs, sort):             # <<<<<<<<<<<<<<
 *         """check if partialdec is a duplicate of any given partialdecs
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs, "DetProbData.partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, partialdecs, sort)\ncheck if partialdec is a duplicate of any given partialdecs\n\n        :param comppartialdec: partialdec to be checked\n        :type comppartialdec: :class:`PartialDecomposition`\n        :param partialdecs: partialdecs to compare with\n        :type partialdecs: object\n        :param sort: sort the vars and conss data structures in the partialdecs by their indices\n        :type sort: bool\n        :return: True iff partialdec is no duplicate of any given partialdecs\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs = {"partialdecIsNoDuplicateOfPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_comppartialdec = 0;
  PyObject *__pyx_v_partialdecs = 0;
  PyObject *__pyx_v_sort = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("partialdecIsNoDuplicateOfPartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comppartialdec,&__pyx_n_s_partialdecs,&__pyx_n_s_sort,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comppartialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 611, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdecs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 611, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("partialdecIsNoDuplicateOfPartialdecs", 1, 3, 3, 1); __PYX_ERR(9, 611, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sort)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 611, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("partialdecIsNoDuplicateOfPartialdecs", 1, 3, 3, 2); __PYX_ERR(9, 611, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "partialdecIsNoDuplicateOfPartialdecs") < 0)) __PYX_ERR(9, 611, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_comppartialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
    __pyx_v_partialdecs = values[1];
    __pyx_v_sort = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("partialdecIsNoDuplicateOfPartialdecs", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 611, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.partialdecIsNoDuplicateOfPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comppartialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "comppartialdec", 0))) __PYX_ERR(9, 611, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_comppartialdec, __pyx_v_partialdecs, __pyx_v_sort);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_comppartialdec, PyObject *__pyx_v_partialdecs, PyObject *__pyx_v_sort) {
  gcg::PARTIALDECOMP *__pyx_v_cpp_comppartialdec;
  std::vector<gcg::PARTIALDECOMP *>  __pyx_v_cpp_partialdecs;
  gcg::PARTIALDECOMP *__pyx_v_partialdecs_ptr;
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdecs_element = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::PARTIALDECOMP *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  bool __pyx_t_6;
  SCIP_Bool __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("partialdecIsNoDuplicateOfPartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":623
 *         :rtype: bool
 *         """
 *         cdef PARTIALDECOMP* cpp_comppartialdec = comppartialdec.thisptr             # <<<<<<<<<<<<<<
 *         cdef vector[PARTIALDECOMP*] cpp_partialdecs
 *         cdef PARTIALDECOMP* partialdecs_ptr = NULL
 */
  __pyx_t_1 = __pyx_v_comppartialdec->thisptr;
  __pyx_v_cpp_comppartialdec = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":625
 *         cdef PARTIALDECOMP* cpp_comppartialdec = comppartialdec.thisptr
 *         cdef vector[PARTIALDECOMP*] cpp_partialdecs
 *         cdef PARTIALDECOMP* partialdecs_ptr = NULL             # <<<<<<<<<<<<<<
 *         cdef PartialDecomposition partialdecs_element
 *         for partialdecs_element in partialdecs:
 */
  __pyx_v_partialdecs_ptr = NULL;

  /* "src/pygcgopt/detprobdata.pxi":627
 *         cdef PARTIALDECOMP* partialdecs_ptr = NULL
 *         cdef PartialDecomposition partialdecs_element
 *         for partialdecs_element in partialdecs:             # <<<<<<<<<<<<<<
 *             partialdecs_ptr = <PARTIALDECOMP*> partialdecs_element.thisptr
 *             cpp_partialdecs.push_back(partialdecs_ptr)
 */
  if (likely(PyList_CheckExact(__pyx_v_partialdecs)) || PyTuple_CheckExact(__pyx_v_partialdecs)) {
    __pyx_t_2 = __pyx_v_partialdecs; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_partialdecs); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 627, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 627, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(9, 627, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 627, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 627, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(9, 627, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 627, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(9, 627, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition))))) __PYX_ERR(9, 627, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_partialdecs_element, ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/pygcgopt/detprobdata.pxi":628
 *         cdef PartialDecomposition partialdecs_element
 *         for partialdecs_element in partialdecs:
 *             partialdecs_ptr = <PARTIALDECOMP*> partialdecs_element.thisptr             # <<<<<<<<<<<<<<
 *             cpp_partialdecs.push_back(partialdecs_ptr)
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 */
    __pyx_v_partialdecs_ptr = ((gcg::PARTIALDECOMP *)__pyx_v_partialdecs_element->thisptr);

    /* "src/pygcgopt/detprobdata.pxi":629
 *         for partialdecs_element in partialdecs:
 *             partialdecs_ptr = <PARTIALDECOMP*> partialdecs_element.thisptr
 *             cpp_partialdecs.push_back(partialdecs_ptr)             # <<<<<<<<<<<<<<
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 * 
 */
    try {
      __pyx_v_cpp_partialdecs.push_back(__pyx_v_partialdecs_ptr);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(9, 629, __pyx_L1_error)
    }

    /* "src/pygcgopt/detprobdata.pxi":627
 *         cdef PARTIALDECOMP* partialdecs_ptr = NULL
 *         cdef PartialDecomposition partialdecs_element
 *         for partialdecs_element in partialdecs:             # <<<<<<<<<<<<<<
 *             partialdecs_ptr = <PARTIALDECOMP*> partialdecs_element.thisptr
 *             cpp_partialdecs.push_back(partialdecs_ptr)
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detprobdata.pxi":630
 *             partialdecs_ptr = <PARTIALDECOMP*> partialdecs_element.thisptr
 *             cpp_partialdecs.push_back(partialdecs_ptr)
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)             # <<<<<<<<<<<<<<
 * 
 *     def sortFinishedForScore(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_sort); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(9, 630, __pyx_L1_error)
  try {
    __pyx_t_7 = __pyx_v_self->thisptr->partialdecIsNoDuplicateOfPartialdecs(__pyx_v_cpp_comppartialdec, __pyx_v_cpp_partialdecs, __pyx_t_6);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 630, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":611
 *         return self.thisptr.isAssignedToOrigProb()
 * 
 *     def partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, object partialdecs, sort):             # <<<<<<<<<<<<<<
 *         """check if partialdec is a duplicate of any given partialdecs
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.partialdecIsNoDuplicateOfPartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_partialdecs_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":632
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 * 
 *     def sortFinishedForScore(self):             # <<<<<<<<<<<<<<
 *         """sorts partialdecs in finished partialdecs data structure according to the current scoretype
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore, "DetProbData.sortFinishedForScore(self)\nsorts partialdecs in finished partialdecs data structure according to the current scoretype\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore = {"sortFinishedForScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sortFinishedForScore (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sortFinishedForScore", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sortFinishedForScore", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sortFinishedForScore", 1);

  /* "src/pygcgopt/detprobdata.pxi":635
 *         """sorts partialdecs in finished partialdecs data structure according to the current scoretype
 *         """
 *         self.thisptr.sortFinishedForScore()             # <<<<<<<<<<<<<<
 * 
 *     def translatePartialdecs(self, DetProbData otherdata, object otherpartialdecs):
 */
  try {
    __pyx_v_self->thisptr->sortFinishedForScore();
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 635, __pyx_L1_error)
  }

  /* "src/pygcgopt/detprobdata.pxi":632
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 * 
 *     def sortFinishedForScore(self):             # <<<<<<<<<<<<<<
 *         """sorts partialdecs in finished partialdecs data structure according to the current scoretype
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.sortFinishedForScore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/detprobdata.pxi":637
 *         self.thisptr.sortFinishedForScore()
 * 
 *     def translatePartialdecs(self, DetProbData otherdata, object otherpartialdecs):             # <<<<<<<<<<<<<<
 *         """translates partialdecs if the index structure of the problem has changed, e.g. due to presolving
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs, "DetProbData.translatePartialdecs(self, DetProbData otherdata, otherpartialdecs)\ntranslates partialdecs if the index structure of the problem has changed, e.g. due to presolving\n\n        :param otherdata: old detprobdata\n        :type otherdata: :class:`DetProbData`\n        :param otherpartialdecs: partialdecs to be translated\n        :type otherpartialdecs: object\n        :return: translated partialdecs\n        :rtype: list\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs = {"translatePartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_otherdata = 0;
  PyObject *__pyx_v_otherpartialdecs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("translatePartialdecs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_otherdata,&__pyx_n_s_otherpartialdecs,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_otherdata)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 637, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_otherpartialdecs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 637, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("translatePartialdecs", 1, 2, 2, 1); __PYX_ERR(9, 637, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "translatePartialdecs") < 0)) __PYX_ERR(9, 637, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_otherdata = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)values[0]);
    __pyx_v_otherpartialdecs = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("translatePartialdecs", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 637, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.translatePartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_otherdata), __pyx_ptype_8pygcgopt_3gcg_DetProbData, 1, "otherdata", 0))) __PYX_ERR(9, 637, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v_otherdata, __pyx_v_otherpartialdecs);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs(struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_otherdata, PyObject *__pyx_v_otherpartialdecs) {
  gcg::DETPROBDATA *__pyx_v_cpp_otherdata;
  std::vector<gcg::PARTIALDECOMP *>  __pyx_v_cpp_otherpartialdecs;
  gcg::PARTIALDECOMP *__pyx_v_otherpartialdecs_ptr;
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_otherpartialdecs_element = 0;
  std::vector<gcg::PARTIALDECOMP *>  __pyx_v_result;
  gcg::PARTIALDECOMP *__pyx_9genexpr18__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  gcg::DETPROBDATA *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  std::vector<gcg::PARTIALDECOMP *>  __pyx_t_6;
  std::vector<gcg::PARTIALDECOMP *> ::iterator __pyx_t_7;
  gcg::PARTIALDECOMP *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("translatePartialdecs", 1);

  /* "src/pygcgopt/detprobdata.pxi":647
 *         :rtype: list
 *         """
 *         cdef DETPROBDATA* cpp_otherdata = otherdata.thisptr             # <<<<<<<<<<<<<<
 *         cdef vector[PARTIALDECOMP*] cpp_otherpartialdecs
 *         cdef PARTIALDECOMP* otherpartialdecs_ptr = NULL
 */
  __pyx_t_1 = __pyx_v_otherdata->thisptr;
  __pyx_v_cpp_otherdata = __pyx_t_1;

  /* "src/pygcgopt/detprobdata.pxi":649
 *         cdef DETPROBDATA* cpp_otherdata = otherdata.thisptr
 *         cdef vector[PARTIALDECOMP*] cpp_otherpartialdecs
 *         cdef PARTIALDECOMP* otherpartialdecs_ptr = NULL             # <<<<<<<<<<<<<<
 *         cdef PartialDecomposition otherpartialdecs_element
 *         for otherpartialdecs_element in otherpartialdecs:
 */
  __pyx_v_otherpartialdecs_ptr = NULL;

  /* "src/pygcgopt/detprobdata.pxi":651
 *         cdef PARTIALDECOMP* otherpartialdecs_ptr = NULL
 *         cdef PartialDecomposition otherpartialdecs_element
 *         for otherpartialdecs_element in otherpartialdecs:             # <<<<<<<<<<<<<<
 *             otherpartialdecs_ptr = <PARTIALDECOMP*> otherpartialdecs_element.thisptr
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)
 */
  if (likely(PyList_CheckExact(__pyx_v_otherpartialdecs)) || PyTuple_CheckExact(__pyx_v_otherpartialdecs)) {
    __pyx_t_2 = __pyx_v_otherpartialdecs; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_otherpartialdecs); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 651, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 651, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(9, 651, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 651, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(9, 651, __pyx_L1_error)
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(9, 651, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition))))) __PYX_ERR(9, 651, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_otherpartialdecs_element, ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/pygcgopt/detprobdata.pxi":652
 *         cdef PartialDecomposition otherpartialdecs_element
 *         for otherpartialdecs_element in otherpartialdecs:
 *             otherpartialdecs_ptr = <PARTIALDECOMP*> otherpartialdecs_element.thisptr             # <<<<<<<<<<<<<<
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.translatePartialdecs(cpp_otherdata, cpp_otherpartialdecs)
 */
    __pyx_v_otherpartialdecs_ptr = ((gcg::PARTIALDECOMP *)__pyx_v_otherpartialdecs_element->thisptr);

    /* "src/pygcgopt/detprobdata.pxi":653
 *         for otherpartialdecs_element in otherpartialdecs:
 *             otherpartialdecs_ptr = <PARTIALDECOMP*> otherpartialdecs_element.thisptr
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)             # <<<<<<<<<<<<<<
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.translatePartialdecs(cpp_otherdata, cpp_otherpartialdecs)
 *         return [PartialDecomposition.create(r) for r in result]
 */
    try {
      __pyx_v_cpp_otherpartialdecs.push_back(__pyx_v_otherpartialdecs_ptr);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(9, 653, __pyx_L1_error)
    }

    /* "src/pygcgopt/detprobdata.pxi":651
 *         cdef PARTIALDECOMP* otherpartialdecs_ptr = NULL
 *         cdef PartialDecomposition otherpartialdecs_element
 *         for otherpartialdecs_element in otherpartialdecs:             # <<<<<<<<<<<<<<
 *             otherpartialdecs_ptr = <PARTIALDECOMP*> otherpartialdecs_element.thisptr
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detprobdata.pxi":654
 *             otherpartialdecs_ptr = <PARTIALDECOMP*> otherpartialdecs_element.thisptr
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.translatePartialdecs(cpp_otherdata, cpp_otherpartialdecs)             # <<<<<<<<<<<<<<
 *         return [PartialDecomposition.create(r) for r in result]
 */
  try {
    __pyx_t_6 = __pyx_v_self->thisptr->translatePartialdecs(__pyx_v_cpp_otherdata, __pyx_v_cpp_otherpartialdecs);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(9, 654, __pyx_L1_error)
  }
  __pyx_v_result = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "src/pygcgopt/detprobdata.pxi":655
 *             cpp_otherpartialdecs.push_back(otherpartialdecs_ptr)
 *         cdef vector[PARTIALDECOMP*] result = self.thisptr.translatePartialdecs(cpp_otherdata, cpp_otherpartialdecs)
 *         return [PartialDecomposition.create(r) for r in result]             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __pyx_v_result.begin();
    for (;;) {
      if (!(__pyx_t_7 != __pyx_v_result.end())) break;
      __pyx_t_8 = *__pyx_t_7;
      ++__pyx_t_7;
      __pyx_9genexpr18__pyx_v_r = __pyx_t_8;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_9genexpr18__pyx_v_r); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 655, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(9, 655, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/detprobdata.pxi":637
 *         self.thisptr.sortFinishedForScore()
 * 
 *     def translatePartialdecs(self, DetProbData otherdata, object otherpartialdecs):             # <<<<<<<<<<<<<<
 *         """translates partialdecs if the index structure of the problem has changed, e.g. due to presolving
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.translatePartialdecs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_otherpartialdecs_element);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__, "DetProbData.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_thisptr_cannot_be_converted, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__, "DetProbData.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_DetProbData *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_thisptr_cannot_be_converted, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.DetProbData.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/consclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeConsClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of constraint classifier'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier, "ConsClassifier.freeConsClassifier(self)\ncalls destructor and frees memory of constraint classifier");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier = {"freeConsClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeConsClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("freeConsClassifier", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "freeConsClassifier", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeConsClassifier", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/consclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, conss, partition):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_3classify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14ConsClassifier_2classify, "ConsClassifier.classify(self, conss, partition)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_3classify = {"classify", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_3classify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_2classify};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_3classify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_conss = 0;
  CYTHON_UNUSED PyObject *__pyx_v_partition = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classify (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_conss,&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_conss)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 10, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("classify", 1, 2, 2, 1); __PYX_ERR(3, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "classify") < 0)) __PYX_ERR(3, 10, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_conss = values[0];
    __pyx_v_partition = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("classify", 1, 2, 2, __pyx_nargs); __PYX_ERR(3, 10, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsClassifier.classify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_2classify(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self), __pyx_v_conss, __pyx_v_partition);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_2classify(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_conss, CYTHON_UNUSED PyObject *__pyx_v_partition) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classify", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/consclassifier.pxi":3
 * cdef class ConsClassifier:
 *     """Base class of the Constraint Classifier Plugin"""
 *     cdef public Model model             # <<<<<<<<<<<<<<
 *     cdef public str name
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model___get__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(3, 3, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsClassifier.model.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None);

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

/* "src/pygcgopt/consclassifier.pxi":4
 *     """Base class of the Constraint Classifier Plugin"""
 *     cdef public Model model
 *     cdef public str name             # <<<<<<<<<<<<<<
 * 
 *     def freeConsClassifier(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name___get__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name___get__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __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;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_2__set__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_value))) __PYX_ERR(3, 4, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __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;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsClassifier.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4name_4__del__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)Py_None);

  /* 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_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__, "ConsClassifier.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__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;
  PyObject *__pyx_t_3 = NULL;
  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__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.model, 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(5, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __Pyx_GIVEREF((PyObject *)__pyx_v_self->model);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->model))) __PYX_ERR(5, 5, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name)) __PYX_ERR(5, 5, __pyx_L1_error);
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.model, 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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = (self.model, 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);
  if (__pyx_t_2) {

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

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

    /* "(tree fragment)":7
 *     state = (self.model, 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.model is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, None), state
 */
  /*else*/ {
    __pyx_t_4 = (((PyObject *)__pyx_v_self->model) != Py_None);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_2 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_2;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_ConsClassifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_76513566);
    __Pyx_GIVEREF(__pyx_int_76513566);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_76513566)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, None), state
 *     else:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConsClassifier__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ConsClassifier); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_76513566);
    __Pyx_GIVEREF(__pyx_int_76513566);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_76513566)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.ConsClassifier.__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_ConsClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConsClassifier__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__, "ConsClassifier.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.ConsClassifier.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ConsClassifier__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_ConsClassifier__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_ConsClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConsClassifier__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("pygcgopt.gcg.ConsClassifier.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/consclassifier.pxi":13
 *         pass
 * 
 * cdef SCIP_RETCODE PyConsClassifierFree(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyConsClassifierFree(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_CONSCLASSIFIER *__pyx_v_consclassifier) {
  GCG_CLASSIFIERDATA *__pyx_v_consclassifierdata;
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_py_consclassifier = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyConsClassifierFree", 0);

  /* "src/pygcgopt/consclassifier.pxi":15
 * cdef SCIP_RETCODE PyConsClassifierFree(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier) noexcept with gil:
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)             # <<<<<<<<<<<<<<
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     py_consclassifier.freeConsClassifier()
 */
  __pyx_v_consclassifierdata = GCGconsClassifierGetData(__pyx_v_consclassifier);

  /* "src/pygcgopt/consclassifier.pxi":16
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 *     py_consclassifier = <ConsClassifier>consclassifierdata             # <<<<<<<<<<<<<<
 *     py_consclassifier.freeConsClassifier()
 *     Py_DECREF(py_consclassifier)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_consclassifierdata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_consclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":17
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     py_consclassifier.freeConsClassifier()             # <<<<<<<<<<<<<<
 *     Py_DECREF(py_consclassifier)
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_consclassifier), __pyx_n_s_freeConsClassifier); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":18
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     py_consclassifier.freeConsClassifier()
 *     Py_DECREF(py_consclassifier)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_py_consclassifier));

  /* "src/pygcgopt/consclassifier.pxi":19
 *     py_consclassifier.freeConsClassifier()
 *     Py_DECREF(py_consclassifier)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyConsClassifierClassify(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier, SCIP_Bool transformed) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/consclassifier.pxi":13
 *         pass
 * 
 * cdef SCIP_RETCODE PyConsClassifierFree(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyConsClassifierFree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_consclassifier);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/consclassifier.pxi":21
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyConsClassifierClassify(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier, SCIP_Bool transformed) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyConsClassifierClassify(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_CONSCLASSIFIER *__pyx_v_consclassifier, SCIP_Bool __pyx_v_transformed) {
  GCG_CLASSIFIERDATA *__pyx_v_consclassifierdata;
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_py_consclassifier = NULL;
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_conss = NULL;
  PyObject *__pyx_v_partition = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  Py_ssize_t __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;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyConsClassifierClassify", 0);

  /* "src/pygcgopt/consclassifier.pxi":23
 * cdef SCIP_RETCODE PyConsClassifierClassify(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier, SCIP_Bool transformed) noexcept with gil:
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)             # <<<<<<<<<<<<<<
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     if transformed:
 */
  __pyx_v_consclassifierdata = GCGconsClassifierGetData(__pyx_v_consclassifier);

  /* "src/pygcgopt/consclassifier.pxi":24
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 *     py_consclassifier = <ConsClassifier>consclassifierdata             # <<<<<<<<<<<<<<
 *     if transformed:
 *         detprobdata = py_consclassifier.model.getDetprobdataPresolved()
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_consclassifierdata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_consclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":25
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     if transformed:             # <<<<<<<<<<<<<<
 *         detprobdata = py_consclassifier.model.getDetprobdataPresolved()
 *     else:
 */
  __pyx_t_2 = (__pyx_v_transformed != 0);
  if (__pyx_t_2) {

    /* "src/pygcgopt/consclassifier.pxi":26
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     if transformed:
 *         detprobdata = py_consclassifier.model.getDetprobdataPresolved()             # <<<<<<<<<<<<<<
 *     else:
 *         detprobdata = py_consclassifier.model.getDetprobdataOrig()
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_consclassifier->model), __pyx_n_s_getDetprobdataPresolved); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 26, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_detprobdata = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/pygcgopt/consclassifier.pxi":25
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 *     py_consclassifier = <ConsClassifier>consclassifierdata
 *     if transformed:             # <<<<<<<<<<<<<<
 *         detprobdata = py_consclassifier.model.getDetprobdataPresolved()
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/pygcgopt/consclassifier.pxi":28
 *         detprobdata = py_consclassifier.model.getDetprobdataPresolved()
 *     else:
 *         detprobdata = py_consclassifier.model.getDetprobdataOrig()             # <<<<<<<<<<<<<<
 *     conss = detprobdata.getRelevantConss()
 *     partition = detprobdata.createConsPart(py_consclassifier.name, 0, len(conss))
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_consclassifier->model), __pyx_n_s_getDetprobdataOrig); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 28, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_detprobdata = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "src/pygcgopt/consclassifier.pxi":29
 *     else:
 *         detprobdata = py_consclassifier.model.getDetprobdataOrig()
 *     conss = detprobdata.getRelevantConss()             # <<<<<<<<<<<<<<
 *     partition = detprobdata.createConsPart(py_consclassifier.name, 0, len(conss))
 *     py_consclassifier.classify(conss, partition)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_getRelevantConss); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_conss = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":30
 *         detprobdata = py_consclassifier.model.getDetprobdataOrig()
 *     conss = detprobdata.getRelevantConss()
 *     partition = detprobdata.createConsPart(py_consclassifier.name, 0, len(conss))             # <<<<<<<<<<<<<<
 *     py_consclassifier.classify(conss, partition)
 *     print("Consclassifier {0} yields a classification with {1} different constraint classes".format(partition.getName(), partition.getNClasses()))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_createConsPart); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = PyObject_Length(__pyx_v_conss); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(3, 30, __pyx_L1_error)
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_py_consclassifier->name, __pyx_int_0, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_partition = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":31
 *     conss = detprobdata.getRelevantConss()
 *     partition = detprobdata.createConsPart(py_consclassifier.name, 0, len(conss))
 *     py_consclassifier.classify(conss, partition)             # <<<<<<<<<<<<<<
 *     print("Consclassifier {0} yields a classification with {1} different constraint classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addConsPartition(partition)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_consclassifier), __pyx_n_s_classify); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_conss, __pyx_v_partition};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/consclassifier.pxi":32
 *     partition = detprobdata.createConsPart(py_consclassifier.name, 0, len(conss))
 *     py_consclassifier.classify(conss, partition)
 *     print("Consclassifier {0} yields a classification with {1} different constraint classes".format(partition.getName(), partition.getNClasses()))             # <<<<<<<<<<<<<<
 *     detprobdata.addConsPartition(partition)
 *     return SCIP_OKAY
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Consclassifier_0_yields_a_classi, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_partition, __pyx_n_s_getName); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_partition, __pyx_n_s_getNClasses); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_4, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/consclassifier.pxi":33
 *     py_consclassifier.classify(conss, partition)
 *     print("Consclassifier {0} yields a classification with {1} different constraint classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addConsPartition(partition)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_addConsPartition); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_partition};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/consclassifier.pxi":34
 *     print("Consclassifier {0} yields a classification with {1} different constraint classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addConsPartition(partition)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/consclassifier.pxi":21
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyConsClassifierClassify(SCIP* scip, GCG_CONSCLASSIFIER* consclassifier, SCIP_Bool transformed) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* consclassifierdata
 *     consclassifierdata = GCGconsClassifierGetData(consclassifier)
 */

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyConsClassifierClassify", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_consclassifier);
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_conss);
  __Pyx_XDECREF(__pyx_v_partition);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/varclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeVarClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of variable classifier'''
 *         pass
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier, "VarClassifier.freeVarClassifier(self)\ncalls destructor and frees memory of variable classifier");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier = {"freeVarClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeVarClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("freeVarClassifier", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "freeVarClassifier", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("freeVarClassifier", 1);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/varclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, vars, partition):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_3classify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13VarClassifier_2classify, "VarClassifier.classify(self, vars, partition)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13VarClassifier_3classify = {"classify", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_3classify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_2classify};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_3classify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_vars = 0;
  CYTHON_UNUSED PyObject *__pyx_v_partition = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("classify (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vars,&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_vars)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 10, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("classify", 1, 2, 2, 1); __PYX_ERR(10, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "classify") < 0)) __PYX_ERR(10, 10, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_vars = values[0];
    __pyx_v_partition = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("classify", 1, 2, 2, __pyx_nargs); __PYX_ERR(10, 10, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.classify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_2classify(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self), __pyx_v_vars, __pyx_v_partition);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_2classify(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_vars, CYTHON_UNUSED PyObject *__pyx_v_partition) {
  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("classify", 1);

  /* "src/pygcgopt/varclassifier.pxi":11
 * 
 *     def classify(self, vars, partition):
 *         return {}             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyVarClassifierFree(SCIP* scip, GCG_VARCLASSIFIER* varclassifier) noexcept with gil:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/pygcgopt/varclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, vars, partition):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.classify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/varclassifier.pxi":3
 * cdef class VarClassifier:
 *     """Base class of the Variable Classifier Plugin"""
 *     cdef public Model model             # <<<<<<<<<<<<<<
 *     cdef public str name
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model___get__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model___get__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __pyx_r = ((PyObject *)__pyx_v_self->model);
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_2__set__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(10, 3, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.model.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_5model_4__del__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->model);
  __Pyx_DECREF((PyObject *)__pyx_v_self->model);
  __pyx_v_self->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None);

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

/* "src/pygcgopt/varclassifier.pxi":4
 *     """Base class of the Variable Classifier Plugin"""
 *     cdef public Model model
 *     cdef public str name             # <<<<<<<<<<<<<<
 * 
 *     def freeVarClassifier(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name___get__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name___get__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __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;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_2__set__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_2__set__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self, PyObject *__pyx_v_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("__set__", 1);
  if (!(likely(PyUnicode_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_value))) __PYX_ERR(10, 4, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_value;
  __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;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_4__del__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static int __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4name_4__del__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = ((PyObject*)Py_None);

  /* 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_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__, "VarClassifier.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__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;
  PyObject *__pyx_t_3 = NULL;
  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__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self.model, 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(5, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__pyx_v_self->model);
  __Pyx_GIVEREF((PyObject *)__pyx_v_self->model);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->model))) __PYX_ERR(5, 5, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->name);
  __Pyx_GIVEREF(__pyx_v_self->name);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->name)) __PYX_ERR(5, 5, __pyx_L1_error);
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self.model, 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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = (self.model, 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);
  if (__pyx_t_2) {

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

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

    /* "(tree fragment)":7
 *     state = (self.model, 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.model is not None or self.name is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, None), state
 */
  /*else*/ {
    __pyx_t_4 = (((PyObject *)__pyx_v_self->model) != Py_None);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_2 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_self->name != ((PyObject*)Py_None));
    __pyx_t_2 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_2;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_VarClassifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_76513566);
    __Pyx_GIVEREF(__pyx_int_76513566);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_76513566)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self.model is not None or self.name is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, None), state
 *     else:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_VarClassifier__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_VarClassifier); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_76513566);
    __Pyx_GIVEREF(__pyx_int_76513566);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_76513566)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.__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_VarClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VarClassifier__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__, "VarClassifier.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.VarClassifier.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_VarClassifier__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_VarClassifier__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_VarClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VarClassifier__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("pygcgopt.gcg.VarClassifier.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/pygcgopt/varclassifier.pxi":13
 *         return {}
 * 
 * cdef SCIP_RETCODE PyVarClassifierFree(SCIP* scip, GCG_VARCLASSIFIER* varclassifier) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyVarClassifierFree(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_VARCLASSIFIER *__pyx_v_varclassifier) {
  GCG_CLASSIFIERDATA *__pyx_v_varclassifierdata;
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_py_varclassifier = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyVarClassifierFree", 0);

  /* "src/pygcgopt/varclassifier.pxi":15
 * cdef SCIP_RETCODE PyVarClassifierFree(SCIP* scip, GCG_VARCLASSIFIER* varclassifier) noexcept with gil:
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)             # <<<<<<<<<<<<<<
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     py_varclassifier.freeVarClassifier()
 */
  __pyx_v_varclassifierdata = GCGvarClassifierGetData(__pyx_v_varclassifier);

  /* "src/pygcgopt/varclassifier.pxi":16
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 *     py_varclassifier = <VarClassifier>varclassifierdata             # <<<<<<<<<<<<<<
 *     py_varclassifier.freeVarClassifier()
 *     Py_DECREF(py_varclassifier)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_varclassifierdata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_varclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":17
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     py_varclassifier.freeVarClassifier()             # <<<<<<<<<<<<<<
 *     Py_DECREF(py_varclassifier)
 *     return SCIP_OKAY
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_varclassifier), __pyx_n_s_freeVarClassifier); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":18
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     py_varclassifier.freeVarClassifier()
 *     Py_DECREF(py_varclassifier)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_py_varclassifier));

  /* "src/pygcgopt/varclassifier.pxi":19
 *     py_varclassifier.freeVarClassifier()
 *     Py_DECREF(py_varclassifier)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 * 
 * cdef SCIP_RETCODE PyVarClassifierClassify(SCIP* scip, GCG_VARCLASSIFIER* varclassifier, SCIP_Bool transformed) noexcept with gil:
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/varclassifier.pxi":13
 *         return {}
 * 
 * cdef SCIP_RETCODE PyVarClassifierFree(SCIP* scip, GCG_VARCLASSIFIER* varclassifier) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyVarClassifierFree", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_varclassifier);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/pygcgopt/varclassifier.pxi":21
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyVarClassifierClassify(SCIP* scip, GCG_VARCLASSIFIER* varclassifier, SCIP_Bool transformed) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 */

static SCIP_RETCODE __pyx_f_8pygcgopt_3gcg_PyVarClassifierClassify(CYTHON_UNUSED SCIP *__pyx_v_scip, GCG_VARCLASSIFIER *__pyx_v_varclassifier, SCIP_Bool __pyx_v_transformed) {
  GCG_CLASSIFIERDATA *__pyx_v_varclassifierdata;
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_py_varclassifier = NULL;
  PyObject *__pyx_v_detprobdata = NULL;
  PyObject *__pyx_v_vars = NULL;
  PyObject *__pyx_v_partition = NULL;
  SCIP_RETCODE __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  Py_ssize_t __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;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyVarClassifierClassify", 0);

  /* "src/pygcgopt/varclassifier.pxi":23
 * cdef SCIP_RETCODE PyVarClassifierClassify(SCIP* scip, GCG_VARCLASSIFIER* varclassifier, SCIP_Bool transformed) noexcept with gil:
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)             # <<<<<<<<<<<<<<
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     if transformed:
 */
  __pyx_v_varclassifierdata = GCGvarClassifierGetData(__pyx_v_varclassifier);

  /* "src/pygcgopt/varclassifier.pxi":24
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 *     py_varclassifier = <VarClassifier>varclassifierdata             # <<<<<<<<<<<<<<
 *     if transformed:
 *         detprobdata = py_varclassifier.model.getDetprobdataPresolved()
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_varclassifierdata);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_py_varclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":25
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     if transformed:             # <<<<<<<<<<<<<<
 *         detprobdata = py_varclassifier.model.getDetprobdataPresolved()
 *     else:
 */
  __pyx_t_2 = (__pyx_v_transformed != 0);
  if (__pyx_t_2) {

    /* "src/pygcgopt/varclassifier.pxi":26
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     if transformed:
 *         detprobdata = py_varclassifier.model.getDetprobdataPresolved()             # <<<<<<<<<<<<<<
 *     else:
 *         detprobdata = py_varclassifier.model.getDetprobdataOrig()
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_varclassifier->model), __pyx_n_s_getDetprobdataPresolved); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 26, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_detprobdata = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/pygcgopt/varclassifier.pxi":25
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 *     py_varclassifier = <VarClassifier>varclassifierdata
 *     if transformed:             # <<<<<<<<<<<<<<
 *         detprobdata = py_varclassifier.model.getDetprobdataPresolved()
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/pygcgopt/varclassifier.pxi":28
 *         detprobdata = py_varclassifier.model.getDetprobdataPresolved()
 *     else:
 *         detprobdata = py_varclassifier.model.getDetprobdataOrig()             # <<<<<<<<<<<<<<
 *     vars = detprobdata.getRelevantVars()
 *     partition = detprobdata.createVarPart(py_varclassifier.name, 0, len(vars))
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_varclassifier->model), __pyx_n_s_getDetprobdataOrig); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 28, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_detprobdata = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "src/pygcgopt/varclassifier.pxi":29
 *     else:
 *         detprobdata = py_varclassifier.model.getDetprobdataOrig()
 *     vars = detprobdata.getRelevantVars()             # <<<<<<<<<<<<<<
 *     partition = detprobdata.createVarPart(py_varclassifier.name, 0, len(vars))
 *     py_varclassifier.classify(vars, partition)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_getRelevantVars); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":30
 *         detprobdata = py_varclassifier.model.getDetprobdataOrig()
 *     vars = detprobdata.getRelevantVars()
 *     partition = detprobdata.createVarPart(py_varclassifier.name, 0, len(vars))             # <<<<<<<<<<<<<<
 *     py_varclassifier.classify(vars, partition)
 *     print("Varclassifier {0} yields a classification with {1} different variable classes".format(partition.getName(), partition.getNClasses()))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_createVarPart); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = PyObject_Length(__pyx_v_vars); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(10, 30, __pyx_L1_error)
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_py_varclassifier->name, __pyx_int_0, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_partition = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":31
 *     vars = detprobdata.getRelevantVars()
 *     partition = detprobdata.createVarPart(py_varclassifier.name, 0, len(vars))
 *     py_varclassifier.classify(vars, partition)             # <<<<<<<<<<<<<<
 *     print("Varclassifier {0} yields a classification with {1} different variable classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addVarPartition(partition)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_py_varclassifier), __pyx_n_s_classify); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_vars, __pyx_v_partition};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/pygcgopt/varclassifier.pxi":32
 *     partition = detprobdata.createVarPart(py_varclassifier.name, 0, len(vars))
 *     py_varclassifier.classify(vars, partition)
 *     print("Varclassifier {0} yields a classification with {1} different variable classes".format(partition.getName(), partition.getNClasses()))             # <<<<<<<<<<<<<<
 *     detprobdata.addVarPartition(partition)
 *     return SCIP_OKAY
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_Varclassifier_0_yields_a_classif, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_partition, __pyx_n_s_getName); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_partition, __pyx_n_s_getNClasses); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_4, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/varclassifier.pxi":33
 *     py_varclassifier.classify(vars, partition)
 *     print("Varclassifier {0} yields a classification with {1} different variable classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addVarPartition(partition)             # <<<<<<<<<<<<<<
 *     return SCIP_OKAY
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_detprobdata, __pyx_n_s_addVarPartition); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_partition};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/pygcgopt/varclassifier.pxi":34
 *     print("Varclassifier {0} yields a classification with {1} different variable classes".format(partition.getName(), partition.getNClasses()))
 *     detprobdata.addVarPartition(partition)
 *     return SCIP_OKAY             # <<<<<<<<<<<<<<
 */
  __pyx_r = SCIP_OKAY;
  goto __pyx_L0;

  /* "src/pygcgopt/varclassifier.pxi":21
 *     return SCIP_OKAY
 * 
 * cdef SCIP_RETCODE PyVarClassifierClassify(SCIP* scip, GCG_VARCLASSIFIER* varclassifier, SCIP_Bool transformed) noexcept with gil:             # <<<<<<<<<<<<<<
 *     cdef GCG_CLASSIFIERDATA* varclassifierdata
 *     varclassifierdata = GCGvarClassifierGetData(varclassifier)
 */

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("pygcgopt.gcg.PyVarClassifierClassify", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (SCIP_RETCODE) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_py_varclassifier);
  __Pyx_XDECREF(__pyx_v_detprobdata);
  __Pyx_XDECREF(__pyx_v_vars);
  __Pyx_XDECREF(__pyx_v_partition);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":34
 * 
 * 
 * cdef SCIP_CLOCK* start_new_clock(SCIP* scip):             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock
 *     PY_SCIP_CALL(SCIPcreateClock(scip, &clock))
 */

static SCIP_CLOCK *__pyx_f_8pygcgopt_3gcg_start_new_clock(SCIP *__pyx_v_scip) {
  SCIP_CLOCK *__pyx_v_clock;
  SCIP_CLOCK *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start_new_clock", 1);

  /* "pygcgopt/gcg.pyx":36
 * cdef SCIP_CLOCK* start_new_clock(SCIP* scip):
 *     cdef SCIP_CLOCK* clock
 *     PY_SCIP_CALL(SCIPcreateClock(scip, &clock))             # <<<<<<<<<<<<<<
 *     PY_SCIP_CALL(SCIPstartClock(scip, clock))
 *     return clock
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(SCIPcreateClock(__pyx_v_scip, (&__pyx_v_clock))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":37
 *     cdef SCIP_CLOCK* clock
 *     PY_SCIP_CALL(SCIPcreateClock(scip, &clock))
 *     PY_SCIP_CALL(SCIPstartClock(scip, clock))             # <<<<<<<<<<<<<<
 *     return clock
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(SCIPstartClock(__pyx_v_scip, __pyx_v_clock)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":38
 *     PY_SCIP_CALL(SCIPcreateClock(scip, &clock))
 *     PY_SCIP_CALL(SCIPstartClock(scip, clock))
 *     return clock             # <<<<<<<<<<<<<<
 * 
 * cdef double stop_and_free_clock(SCIP* scip, SCIP_CLOCK* clock):
 */
  __pyx_r = __pyx_v_clock;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":34
 * 
 * 
 * cdef SCIP_CLOCK* start_new_clock(SCIP* scip):             # <<<<<<<<<<<<<<
 *     cdef SCIP_CLOCK* clock
 *     PY_SCIP_CALL(SCIPcreateClock(scip, &clock))
 */

  /* 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("pygcgopt.gcg.start_new_clock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":40
 *     return clock
 * 
 * cdef double stop_and_free_clock(SCIP* scip, SCIP_CLOCK* clock):             # <<<<<<<<<<<<<<
 *     PY_SCIP_CALL(SCIPstopClock(scip, clock))
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)
 */

static double __pyx_f_8pygcgopt_3gcg_stop_and_free_clock(SCIP *__pyx_v_scip, SCIP_CLOCK *__pyx_v_clock) {
  double __pyx_v_detection_time;
  double __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stop_and_free_clock", 1);

  /* "pygcgopt/gcg.pyx":41
 * 
 * cdef double stop_and_free_clock(SCIP* scip, SCIP_CLOCK* clock):
 *     PY_SCIP_CALL(SCIPstopClock(scip, clock))             # <<<<<<<<<<<<<<
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)
 *     PY_SCIP_CALL(SCIPfreeClock(scip, &clock))
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(SCIPstopClock(__pyx_v_scip, __pyx_v_clock)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":42
 * cdef double stop_and_free_clock(SCIP* scip, SCIP_CLOCK* clock):
 *     PY_SCIP_CALL(SCIPstopClock(scip, clock))
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)             # <<<<<<<<<<<<<<
 *     PY_SCIP_CALL(SCIPfreeClock(scip, &clock))
 *     return detection_time
 */
  __pyx_v_detection_time = SCIPgetClockTime(__pyx_v_scip, __pyx_v_clock);

  /* "pygcgopt/gcg.pyx":43
 *     PY_SCIP_CALL(SCIPstopClock(scip, clock))
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)
 *     PY_SCIP_CALL(SCIPfreeClock(scip, &clock))             # <<<<<<<<<<<<<<
 *     return detection_time
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(SCIPfreeClock(__pyx_v_scip, (&__pyx_v_clock))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":44
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)
 *     PY_SCIP_CALL(SCIPfreeClock(scip, &clock))
 *     return detection_time             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_detection_time;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":40
 *     return clock
 * 
 * cdef double stop_and_free_clock(SCIP* scip, SCIP_CLOCK* clock):             # <<<<<<<<<<<<<<
 *     PY_SCIP_CALL(SCIPstopClock(scip, clock))
 *     cdef double detection_time = SCIPgetClockTime(scip, clock)
 */

  /* 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("pygcgopt.gcg.stop_and_free_clock", __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_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__, "PY_GCG_PRICINGSTATUS.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *__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;
  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("__reduce_cython__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 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 = ()
 *     _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_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, None), state
 *     else:
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PY_GCG_PRICINGSTATUS.__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_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__, "PY_GCG_PRICINGSTATUS.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PY_GCG_PRICINGSTATUS.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__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("pygcgopt.gcg.PY_GCG_PRICINGSTATUS.__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_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__, "PY_USERGIVEN.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *__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;
  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("__reduce_cython__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 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 = ()
 *     _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_PY_USERGIVEN, (type(self), 0xe3b0c44, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_PY_USERGIVEN); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, None), state
 *     else:
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_USERGIVEN__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_PY_USERGIVEN); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PY_USERGIVEN.__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_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_USERGIVEN__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__, "PY_USERGIVEN.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PY_USERGIVEN.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_USERGIVEN__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_USERGIVEN__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_USERGIVEN__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("pygcgopt.gcg.PY_USERGIVEN.__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_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__, "PY_VAR_DECOMPINFO.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *__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;
  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("__reduce_cython__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 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 = ()
 *     _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_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PY_VAR_DECOMPINFO.__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_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__, "PY_VAR_DECOMPINFO.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PY_VAR_DECOMPINFO.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_VAR_DECOMPINFO__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__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("pygcgopt.gcg.PY_VAR_DECOMPINFO.__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_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__, "PY_CONS_DECOMPINFO.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *__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;
  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("__reduce_cython__", 1);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _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(5, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

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

    /* "(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(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict)) __PYX_ERR(5, 8, __pyx_L1_error);
    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 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 = ()
 *     _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_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state)) __PYX_ERR(5, 13, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, None), state
 *     else:
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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))));
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_int_238750788);
    __Pyx_GIVEREF(__pyx_int_238750788);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_238750788)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(5, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.PY_CONS_DECOMPINFO.__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_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__, "PY_CONS_DECOMPINFO.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.PY_CONS_DECOMPINFO.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *__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__", 1);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_CONS_DECOMPINFO__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 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_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__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("pygcgopt.gcg.PY_CONS_DECOMPINFO.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":75
 *     """Main class for interaction with the GCG solver."""
 * 
 *     def includeDefaultPlugins(self):             # <<<<<<<<<<<<<<
 *         """Includes all default plug-ins of GCG into SCIP
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_1includeDefaultPlugins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_includeDefaultPlugins, "Model.includeDefaultPlugins(self)\nIncludes all default plug-ins of GCG into SCIP\n\n        Called automatically during initialization of the model.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_1includeDefaultPlugins = {"includeDefaultPlugins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_1includeDefaultPlugins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_includeDefaultPlugins};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_1includeDefaultPlugins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includeDefaultPlugins (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("includeDefaultPlugins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "includeDefaultPlugins", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_includeDefaultPlugins(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_includeDefaultPlugins(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includeDefaultPlugins", 1);

  /* "pygcgopt/gcg.pyx":80
 *         Called automatically during initialization of the model.
 *         """
 *         PY_SCIP_CALL(SCIPincludeGcgPlugins(self._scip))             # <<<<<<<<<<<<<<
 * 
 *     def addVar(self, *args, **kwargs):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(SCIPincludeGcgPlugins(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":75
 *     """Main class for interaction with the GCG solver."""
 * 
 *     def includeDefaultPlugins(self):             # <<<<<<<<<<<<<<
 *         """Includes all default plug-ins of GCG into SCIP
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeDefaultPlugins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":82
 *         PY_SCIP_CALL(SCIPincludeGcgPlugins(self._scip))
 * 
 *     def addVar(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         pyVar = <Variable>super().addVar(*args, **kwargs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_3addVar(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_2addVar, "Model.addVar(self, *args, **kwargs)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_3addVar = {"addVar", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_3addVar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_2addVar};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_3addVar(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addVar (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "addVar", 1))) return NULL;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_2addVar(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_2addVar(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  struct __pyx_obj_9pyscipopt_4scip_Variable *__pyx_v_pyVar = NULL;
  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("addVar", 1);

  /* "pygcgopt/gcg.pyx":83
 * 
 *     def addVar(self, *args, **kwargs):
 *         pyVar = <Variable>super().addVar(*args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *         SCIPvarSetData(pyVar.scip_var, NULL)
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model);
  __Pyx_GIVEREF((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model))) __PYX_ERR(4, 83, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_v_self);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self))) __PYX_ERR(4, 83, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_addVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 83, __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_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_pyVar = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":85
 *         pyVar = <Variable>super().addVar(*args, **kwargs)
 * 
 *         SCIPvarSetData(pyVar.scip_var, NULL)             # <<<<<<<<<<<<<<
 * 
 *         return pyVar
 */
  SCIPvarSetData(__pyx_v_pyVar->scip_var, NULL);

  /* "pygcgopt/gcg.pyx":87
 *         SCIPvarSetData(pyVar.scip_var, NULL)
 * 
 *         return pyVar             # <<<<<<<<<<<<<<
 * 
 *     def presolve(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pyVar);
  __pyx_r = ((PyObject *)__pyx_v_pyVar);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":82
 *         PY_SCIP_CALL(SCIPincludeGcgPlugins(self._scip))
 * 
 *     def addVar(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         pyVar = <Variable>super().addVar(*args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addVar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pyVar);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":89
 *         return pyVar
 * 
 *     def presolve(self):             # <<<<<<<<<<<<<<
 *         """Presolve the problem."""
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_5presolve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_4presolve, "Model.presolve(self)\nPresolve the problem.");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_5presolve = {"presolve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_5presolve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_4presolve};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_5presolve(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("presolve (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("presolve", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "presolve", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_4presolve(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_4presolve(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("presolve", 1);

  /* "pygcgopt/gcg.pyx":91
 *     def presolve(self):
 *         """Presolve the problem."""
 *         PY_SCIP_CALL(GCGpresolve(self._scip))             # <<<<<<<<<<<<<<
 * 
 *     def detect(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGpresolve(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":89
 *         return pyVar
 * 
 *     def presolve(self):             # <<<<<<<<<<<<<<
 *         """Presolve the problem."""
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.presolve", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":93
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 * 
 *     def detect(self):             # <<<<<<<<<<<<<<
 *         """Detect the problem.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_7detect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_6detect, "Model.detect(self)\nDetect the problem.\n\n        Can be executed before or after presolving. If executed before presolving, the structure is detected on the original problem and presolving is skiped when solving the problem later.\n\n        .. seealso:: * :meth:`presolve`\n                     * :meth:`optimize`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_7detect = {"detect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_7detect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_6detect};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_7detect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("detect (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("detect", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "detect", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_6detect(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_6detect(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("detect", 1);

  /* "pygcgopt/gcg.pyx":101
 *                      * :meth:`optimize`
 *         """
 *         PY_SCIP_CALL(GCGdetect(self._scip))             # <<<<<<<<<<<<<<
 * 
 *     def printStatistics(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGdetect(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":93
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 * 
 *     def detect(self):             # <<<<<<<<<<<<<<
 *         """Detect the problem.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.detect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":103
 *         PY_SCIP_CALL(GCGdetect(self._scip))
 * 
 *     def printStatistics(self):             # <<<<<<<<<<<<<<
 *         """Print solving statistics of GCG to stdout."""
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_9printStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_8printStatistics, "Model.printStatistics(self)\nPrint solving statistics of GCG to stdout.");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_9printStatistics = {"printStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_9printStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_8printStatistics};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_9printStatistics(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("printStatistics (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("printStatistics", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "printStatistics", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_8printStatistics(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_8printStatistics(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("printStatistics", 1);

  /* "pygcgopt/gcg.pyx":105
 *     def printStatistics(self):
 *         """Print solving statistics of GCG to stdout."""
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))             # <<<<<<<<<<<<<<
 * 
 *     def printVersion(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGprintStatistics(__pyx_v_self->__pyx_base._scip, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":103
 *         PY_SCIP_CALL(GCGdetect(self._scip))
 * 
 *     def printStatistics(self):             # <<<<<<<<<<<<<<
 *         """Print solving statistics of GCG to stdout."""
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.printStatistics", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":107
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 * 
 *     def printVersion(self):             # <<<<<<<<<<<<<<
 *         """Print version, copyright information and compile mode of GCG and SCIP"""
 *         GCGprintVersion(self._scip, NULL)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_11printVersion(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_10printVersion, "Model.printVersion(self)\nPrint version, copyright information and compile mode of GCG and SCIP");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_11printVersion = {"printVersion", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_11printVersion, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_10printVersion};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_11printVersion(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("printVersion (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("printVersion", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "printVersion", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_10printVersion(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_10printVersion(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("printVersion", 1);

  /* "pygcgopt/gcg.pyx":109
 *     def printVersion(self):
 *         """Print version, copyright information and compile mode of GCG and SCIP"""
 *         GCGprintVersion(self._scip, NULL)             # <<<<<<<<<<<<<<
 * 
 *         super().printVersion()
 */
  GCGprintVersion(__pyx_v_self->__pyx_base._scip, NULL);

  /* "pygcgopt/gcg.pyx":111
 *         GCGprintVersion(self._scip, NULL)
 * 
 *         super().printVersion()             # <<<<<<<<<<<<<<
 * 
 *     def optimize(self):
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model);
  __Pyx_GIVEREF((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model))) __PYX_ERR(4, 111, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_v_self);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self))) __PYX_ERR(4, 111, __pyx_L1_error);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_printVersion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":107
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 * 
 *     def printVersion(self):             # <<<<<<<<<<<<<<
 *         """Print version, copyright information and compile mode of GCG and SCIP"""
 *         GCGprintVersion(self._scip, NULL)
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.printVersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":113
 *         super().printVersion()
 * 
 *     def optimize(self):             # <<<<<<<<<<<<<<
 *         """Optimize the problem.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_13optimize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_12optimize, "Model.optimize(self)\nOptimize the problem.\n\n        This will transform, presolve and detect the problem if neccessary.\n        Otherwise, GCG will solve the problem directly.");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_13optimize = {"optimize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_13optimize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_12optimize};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_13optimize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("optimize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("optimize", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "optimize", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_12optimize(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_12optimize(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("optimize", 1);

  /* "pygcgopt/gcg.pyx":118
 *         This will transform, presolve and detect the problem if neccessary.
 *         Otherwise, GCG will solve the problem directly."""
 *         PY_SCIP_CALL(GCGsolve(self._scip))             # <<<<<<<<<<<<<<
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGsolve(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":119
 *         Otherwise, GCG will solve the problem directly."""
 *         PY_SCIP_CALL(GCGsolve(self._scip))
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))             # <<<<<<<<<<<<<<
 * 
 *     def getDualbound(self):
 */
  __pyx_t_1 = __pyx_vtabptr_9pyscipopt_4scip_Solution->create(__pyx_v_self->__pyx_base._scip, SCIPgetBestSol(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_9pyscipopt_4scip_Solution))))) __PYX_ERR(4, 119, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->__pyx_base._bestSol);
  __Pyx_DECREF((PyObject *)__pyx_v_self->__pyx_base._bestSol);
  __pyx_v_self->__pyx_base._bestSol = ((struct __pyx_obj_9pyscipopt_4scip_Solution *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":113
 *         super().printVersion()
 * 
 *     def optimize(self):             # <<<<<<<<<<<<<<
 *         """Optimize the problem.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.optimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":121
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))
 * 
 *     def getDualbound(self):             # <<<<<<<<<<<<<<
 *         """Retrieve the best dual bound.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_15getDualbound(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_14getDualbound, "Model.getDualbound(self)\nRetrieve the best dual bound.\n\n        This retrieves the same dual bound that GCG reports in the console log. The dual bound is based on the\n        objective value of the optimized linear programming relaxation at the current node.\n\n        .. note:: The dual bound at the root node is *not* always equal to the solution of the restricted master problem LP relaxation. This can be due to master cuts or abortion of the pricing loop *before* the restricted master problem is optimal.\n\n        :return: The best dual bound of the current node.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_15getDualbound = {"getDualbound", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_15getDualbound, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_14getDualbound};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_15getDualbound(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDualbound (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDualbound", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDualbound", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_14getDualbound(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_14getDualbound(struct __pyx_obj_8pygcgopt_3gcg_Model *__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("getDualbound", 1);

  /* "pygcgopt/gcg.pyx":131
 *         :return: The best dual bound of the current node.
 *         """
 *         return GCGgetDualbound(self._scip)             # <<<<<<<<<<<<<<
 * 
 *     def getDetprobdataOrig(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(GCGgetDualbound(__pyx_v_self->__pyx_base._scip)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":121
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))
 * 
 *     def getDualbound(self):             # <<<<<<<<<<<<<<
 *         """Retrieve the best dual bound.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getDualbound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":133
 *         return GCGgetDualbound(self._scip)
 * 
 *     def getDetprobdataOrig(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for unpresolved problem
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_17getDetprobdataOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_16getDetprobdataOrig, "Model.getDetprobdataOrig(self)\nreturns the detprobdata for unpresolved problem\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_17getDetprobdataOrig = {"getDetprobdataOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_17getDetprobdataOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_16getDetprobdataOrig};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_17getDetprobdataOrig(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetprobdataOrig (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDetprobdataOrig", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDetprobdataOrig", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_16getDetprobdataOrig(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_16getDetprobdataOrig(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  gcg::DETPROBDATA *__pyx_v_detprobdata;
  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("getDetprobdataOrig", 1);

  /* "pygcgopt/gcg.pyx":136
 *         """returns the detprobdata for unpresolved problem
 *         """
 *         cdef DETPROBDATA* detprobdata = GCGconshdlrDecompGetDetprobdataOrig(self._scip)             # <<<<<<<<<<<<<<
 *         return DetProbData.create(detprobdata)
 * 
 */
  __pyx_v_detprobdata = GCGconshdlrDecompGetDetprobdataOrig(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":137
 *         """
 *         cdef DETPROBDATA* detprobdata = GCGconshdlrDecompGetDetprobdataOrig(self._scip)
 *         return DetProbData.create(detprobdata)             # <<<<<<<<<<<<<<
 * 
 *     def getDetprobdataPresolved(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_11DetProbData_create(__pyx_v_detprobdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":133
 *         return GCGgetDualbound(self._scip)
 * 
 *     def getDetprobdataOrig(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for unpresolved problem
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getDetprobdataOrig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":139
 *         return DetProbData.create(detprobdata)
 * 
 *     def getDetprobdataPresolved(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for presolved problem
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved, "Model.getDetprobdataPresolved(self)\nreturns the detprobdata for presolved problem\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved = {"getDetprobdataPresolved", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDetprobdataPresolved (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getDetprobdataPresolved", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getDetprobdataPresolved", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  gcg::DETPROBDATA *__pyx_v_detprobdata;
  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("getDetprobdataPresolved", 1);

  /* "pygcgopt/gcg.pyx":142
 *         """returns the detprobdata for presolved problem
 *         """
 *         cdef DETPROBDATA* detprobdata = GCGconshdlrDecompGetDetprobdataPresolved(self._scip)             # <<<<<<<<<<<<<<
 *         return DetProbData.create(detprobdata)
 * 
 */
  __pyx_v_detprobdata = GCGconshdlrDecompGetDetprobdataPresolved(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":143
 *         """
 *         cdef DETPROBDATA* detprobdata = GCGconshdlrDecompGetDetprobdataPresolved(self._scip)
 *         return DetProbData.create(detprobdata)             # <<<<<<<<<<<<<<
 * 
 *     def listDecompositions(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_11DetProbData_create(__pyx_v_detprobdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":139
 *         return DetProbData.create(detprobdata)
 * 
 *     def getDetprobdataPresolved(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for presolved problem
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getDetprobdataPresolved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":145
 *         return DetProbData.create(detprobdata)
 * 
 *     def listDecompositions(self):             # <<<<<<<<<<<<<<
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_21listDecompositions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_20listDecompositions, "Model.listDecompositions(self)\nLists all finnished decompositions found during the detection loop or provided by the user.");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_21listDecompositions = {"listDecompositions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_21listDecompositions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_20listDecompositions};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_21listDecompositions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listDecompositions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listDecompositions", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listDecompositions", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_20listDecompositions(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_20listDecompositions(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_npartialdecs;
  int *__pyx_v_decids;
  PyObject *__pyx_v_decomps = NULL;
  int __pyx_9genexpr19__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  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("listDecompositions", 1);

  /* "pygcgopt/gcg.pyx":147
 *     def listDecompositions(self):
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)             # <<<<<<<<<<<<<<
 *         cdef int* decids = <int*>malloc(npartialdecs * sizeof(int))
 * 
 */
  __pyx_v_npartialdecs = GCGconshdlrDecompGetNPartialdecs(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":148
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)
 *         cdef int* decids = <int*>malloc(npartialdecs * sizeof(int))             # <<<<<<<<<<<<<<
 * 
 *         GCGconshdlrDecompGetFinishedPartialdecsList(self._scip, &decids, &npartialdecs)
 */
  __pyx_v_decids = ((int *)malloc((__pyx_v_npartialdecs * (sizeof(int)))));

  /* "pygcgopt/gcg.pyx":150
 *         cdef int* decids = <int*>malloc(npartialdecs * sizeof(int))
 * 
 *         GCGconshdlrDecompGetFinishedPartialdecsList(self._scip, &decids, &npartialdecs)             # <<<<<<<<<<<<<<
 * 
 *         decomps = [PartialDecomposition.create(GCGconshdlrDecompGetPartialdecFromID(self._scip, decids[i])) for i in range(npartialdecs)]
 */
  (void)(GCGconshdlrDecompGetFinishedPartialdecsList(__pyx_v_self->__pyx_base._scip, (&__pyx_v_decids), (&__pyx_v_npartialdecs)));

  /* "pygcgopt/gcg.pyx":152
 *         GCGconshdlrDecompGetFinishedPartialdecsList(self._scip, &decids, &npartialdecs)
 * 
 *         decomps = [PartialDecomposition.create(GCGconshdlrDecompGetPartialdecFromID(self._scip, decids[i])) for i in range(npartialdecs)]             # <<<<<<<<<<<<<<
 * 
 *         free(decids)
 */
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_npartialdecs;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr19__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(GCGconshdlrDecompGetPartialdecFromID(__pyx_v_self->__pyx_base._scip, (__pyx_v_decids[__pyx_9genexpr19__pyx_v_i]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(4, 152, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_decomps = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":154
 *         decomps = [PartialDecomposition.create(GCGconshdlrDecompGetPartialdecFromID(self._scip, decids[i])) for i in range(npartialdecs)]
 * 
 *         free(decids)             # <<<<<<<<<<<<<<
 * 
 *         return decomps
 */
  free(__pyx_v_decids);

  /* "pygcgopt/gcg.pyx":156
 *         free(decids)
 * 
 *         return decomps             # <<<<<<<<<<<<<<
 * 
 *     def getPartDecompFromID(self, id):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_decomps);
  __pyx_r = __pyx_v_decomps;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":145
 *         return DetProbData.create(detprobdata)
 * 
 *     def listDecompositions(self):             # <<<<<<<<<<<<<<
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listDecompositions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_decomps);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":158
 *         return decomps
 * 
 *     def getPartDecompFromID(self, id):             # <<<<<<<<<<<<<<
 *         """returns a partial decomposition regarding to the given partialdecomp id
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_23getPartDecompFromID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_22getPartDecompFromID, "Model.getPartDecompFromID(self, id)\nreturns a partial decomposition regarding to the given partialdecomp id\n\n        :param id: patial decomposition id as int\n        :return: PartialDecomposition object \n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_23getPartDecompFromID = {"getPartDecompFromID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_23getPartDecompFromID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_22getPartDecompFromID};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_23getPartDecompFromID(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_id = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getPartDecompFromID (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_id,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_id)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 158, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getPartDecompFromID") < 0)) __PYX_ERR(4, 158, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_id = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getPartDecompFromID", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getPartDecompFromID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_22getPartDecompFromID(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_id);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_22getPartDecompFromID(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_id) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_pd = 0;
  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("getPartDecompFromID", 1);

  /* "pygcgopt/gcg.pyx":164
 *         :return: PartialDecomposition object
 *         """
 *         cdef PartialDecomposition pd = PartialDecomposition.create(GCGconshdlrDecompGetPartialdecFromID(self._scip, id))             # <<<<<<<<<<<<<<
 * 
 *         return pd
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_id); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 164, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(GCGconshdlrDecompGetPartialdecFromID(__pyx_v_self->__pyx_base._scip, __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition))))) __PYX_ERR(4, 164, __pyx_L1_error)
  __pyx_v_pd = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":166
 *         cdef PartialDecomposition pd = PartialDecomposition.create(GCGconshdlrDecompGetPartialdecFromID(self._scip, id))
 * 
 *         return pd             # <<<<<<<<<<<<<<
 * 
 *     def addDecompositionFromConss(self, master_conss, *block_conss):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pd);
  __pyx_r = ((PyObject *)__pyx_v_pd);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":158
 *         return decomps
 * 
 *     def getPartDecompFromID(self, id):             # <<<<<<<<<<<<<<
 *         """returns a partial decomposition regarding to the given partialdecomp id
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getPartDecompFromID", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":168
 *         return pd
 * 
 *     def addDecompositionFromConss(self, master_conss, *block_conss):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG based on constraints.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_25addDecompositionFromConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_24addDecompositionFromConss, "Model.addDecompositionFromConss(self, master_conss, *block_conss)\nAdds a user specified decomposition to GCG based on constraints.\n\n        :param master_conss: An iterable of Constraint objects. Can be the empty list.\n        :param block_conss: Any number of lists. The Constraints from each list will be turned into their own block. (optional)\n        :return: The created PartialDecomposition object\n\n        Creates a PartialDecomposition object using createDecomposition(). Fixes the master constraints with\n        fixMasterConss() and the block constraints with fixBlockConss(). The decomposition is added with addDecomposition().\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_25addDecompositionFromConss = {"addDecompositionFromConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_25addDecompositionFromConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_24addDecompositionFromConss};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_25addDecompositionFromConss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_master_conss = 0;
  PyObject *__pyx_v_block_conss = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDecompositionFromConss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_block_conss = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_block_conss)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_block_conss);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_master_conss,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        default:
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_master_conss)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 168, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        const Py_ssize_t used_pos_args = (kwd_pos_args < 1) ? kwd_pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, used_pos_args, "addDecompositionFromConss") < 0)) __PYX_ERR(4, 168, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs < 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_master_conss = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addDecompositionFromConss", 0, 1, 1, __pyx_nargs); __PYX_ERR(4, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_block_conss); __pyx_v_block_conss = 0;
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addDecompositionFromConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_24addDecompositionFromConss(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_master_conss, __pyx_v_block_conss);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_block_conss);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_24addDecompositionFromConss(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_master_conss, PyObject *__pyx_v_block_conss) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_pd = 0;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_conss = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned 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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addDecompositionFromConss", 1);

  /* "pygcgopt/gcg.pyx":178
 *         fixMasterConss() and the block constraints with fixBlockConss(). The decomposition is added with addDecomposition().
 *         """
 *         cdef PartialDecomposition pd = self.createDecomposition()             # <<<<<<<<<<<<<<
 *         pd.fixConssToMaster(master_conss)
 *         for idx, conss in enumerate(block_conss):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_createDecomposition); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition))))) __PYX_ERR(4, 178, __pyx_L1_error)
  __pyx_v_pd = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":179
 *         """
 *         cdef PartialDecomposition pd = self.createDecomposition()
 *         pd.fixConssToMaster(master_conss)             # <<<<<<<<<<<<<<
 *         for idx, conss in enumerate(block_conss):
 *             if not isinstance(conss, Iterable):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pd), __pyx_n_s_fixConssToMaster); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_master_conss};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":180
 *         cdef PartialDecomposition pd = self.createDecomposition()
 *         pd.fixConssToMaster(master_conss)
 *         for idx, conss in enumerate(block_conss):             # <<<<<<<<<<<<<<
 *             if not isinstance(conss, Iterable):
 *                 pd.fixConsToBlock(conss, idx)
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __pyx_v_block_conss; __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
      #endif
      if (__pyx_t_5 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_conss, __pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1);
    __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "pygcgopt/gcg.pyx":181
 *         pd.fixConssToMaster(master_conss)
 *         for idx, conss in enumerate(block_conss):
 *             if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *                 pd.fixConsToBlock(conss, idx)
 *             else:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_conss, __pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (__pyx_t_7) {

      /* "pygcgopt/gcg.pyx":182
 *         for idx, conss in enumerate(block_conss):
 *             if not isinstance(conss, Iterable):
 *                 pd.fixConsToBlock(conss, idx)             # <<<<<<<<<<<<<<
 *             else:
 *                 pd.fixConssToBlock(conss, idx)
 */
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pd), __pyx_n_s_fixConsToBlock); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_4 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_4 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_conss, __pyx_v_idx};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 182, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "pygcgopt/gcg.pyx":181
 *         pd.fixConssToMaster(master_conss)
 *         for idx, conss in enumerate(block_conss):
 *             if not isinstance(conss, Iterable):             # <<<<<<<<<<<<<<
 *                 pd.fixConsToBlock(conss, idx)
 *             else:
 */
      goto __pyx_L5;
    }

    /* "pygcgopt/gcg.pyx":184
 *                 pd.fixConsToBlock(conss, idx)
 *             else:
 *                 pd.fixConssToBlock(conss, idx)             # <<<<<<<<<<<<<<
 *         self.addDecomposition(pd)
 *         return pd
 */
    /*else*/ {
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pd), __pyx_n_s_fixConssToBlock); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_4 = 0;
      #if CYTHON_UNPACK_METHODS
      if (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_4 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_conss, __pyx_v_idx};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L5:;

    /* "pygcgopt/gcg.pyx":180
 *         cdef PartialDecomposition pd = self.createDecomposition()
 *         pd.fixConssToMaster(master_conss)
 *         for idx, conss in enumerate(block_conss):             # <<<<<<<<<<<<<<
 *             if not isinstance(conss, Iterable):
 *                 pd.fixConsToBlock(conss, idx)
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":185
 *             else:
 *                 pd.fixConssToBlock(conss, idx)
 *         self.addDecomposition(pd)             # <<<<<<<<<<<<<<
 *         return pd
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addDecomposition); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_pd)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":186
 *                 pd.fixConssToBlock(conss, idx)
 *         self.addDecomposition(pd)
 *         return pd             # <<<<<<<<<<<<<<
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pd);
  __pyx_r = ((PyObject *)__pyx_v_pd);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":168
 *         return pd
 * 
 *     def addDecompositionFromConss(self, master_conss, *block_conss):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG based on constraints.
 * 
 */

  /* 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_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addDecompositionFromConss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pd);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_conss);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":188
 *         return pd
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         self.addDecomposition(partialdec)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition, "Model.addPreexistingPartialDecomposition(self, PartialDecomposition partialdec)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition = {"addPreexistingPartialDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPreexistingPartialDecomposition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 188, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPreexistingPartialDecomposition") < 0)) __PYX_ERR(4, 188, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPreexistingPartialDecomposition", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 188, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addPreexistingPartialDecomposition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(4, 188, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPreexistingPartialDecomposition", 1);

  /* "pygcgopt/gcg.pyx":189
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):
 *         self.addDecomposition(partialdec)             # <<<<<<<<<<<<<<
 * 
 *     def addDecomposition(self, PartialDecomposition partialdec):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addDecomposition); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_partialdec)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":188
 *         return pd
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         self.addDecomposition(partialdec)
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addPreexistingPartialDecomposition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":191
 *         self.addDecomposition(partialdec)
 * 
 *     def addDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_29addDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_28addDecomposition, "Model.addDecomposition(self, PartialDecomposition partialdec)\nAdds a user specified decomposition to GCG.\n\n        The passed PartialDecomposition can be partial or finnished. A partial decomposition will be completed by GCG using\n        its detector loop. If a finnished decomposition is passed, GCG will skip the detection loop and use the\n        provided decomposition right away.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_29addDecomposition = {"addDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_29addDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_28addDecomposition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_29addDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addDecomposition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partialdec,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partialdec)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 191, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addDecomposition") < 0)) __PYX_ERR(4, 191, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partialdec = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addDecomposition", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addDecomposition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partialdec), __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, 1, "partialdec", 0))) __PYX_ERR(4, 191, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_28addDecomposition(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_partialdec);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_28addDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *__pyx_v_partialdec) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addDecomposition", 1);

  /* "pygcgopt/gcg.pyx":198
 *         provided decomposition right away.
 *         """
 *         partialdec.prepare()             # <<<<<<<<<<<<<<
 *         partialdec.setUsergiven()
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_partialdec), __pyx_n_s_prepare); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":199
 *         """
 *         partialdec.prepare()
 *         partialdec.setUsergiven()             # <<<<<<<<<<<<<<
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_partialdec), __pyx_n_s_setUsergiven); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":200
 *         partialdec.prepare()
 *         partialdec.setUsergiven()
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)             # <<<<<<<<<<<<<<
 * 
 *     def createDecomposition(self):
 */
  (void)(GCGconshdlrDecompAddPreexisitingPartialDec(__pyx_v_self->__pyx_base._scip, __pyx_v_partialdec->thisptr));

  /* "pygcgopt/gcg.pyx":191
 *         self.addDecomposition(partialdec)
 * 
 *     def addDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.addDecomposition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":202
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 * 
 *     def createDecomposition(self):             # <<<<<<<<<<<<<<
 *         """Creates a new empty PartialDecomposition.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_31createDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_30createDecomposition, "Model.createDecomposition(self)\nCreates a new empty PartialDecomposition.\n\n        The created PartialDecomposition object can be used to fix constraints and variables. Afterwards, it can be\n        passed to the model through addPreexistingPartialDecomposition().\n\n        .. seealso:: * :meth:`PartialDecomposition.fixConsToMaster`\n                     * :meth:`PartialDecomposition.fixConssToMaster`\n                     * :meth:`PartialDecomposition.fixConsToBlock`\n                     * :meth:`PartialDecomposition.fixConssToBlock`\n                     * :meth:`PartialDecomposition.fixConsToBlockId`\n                     * :meth:`PartialDecomposition.fixConssToBlockId`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_31createDecomposition = {"createDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_31createDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_30createDecomposition};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_31createDecomposition(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createDecomposition (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("createDecomposition", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "createDecomposition", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_30createDecomposition(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_30createDecomposition(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  bool __pyx_v_is_presolved;
  gcg::PARTIALDECOMP *__pyx_v_decomp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  bool __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createDecomposition", 1);

  /* "pygcgopt/gcg.pyx":215
 *                      * :meth:`PartialDecomposition.fixConssToBlockId`
 *         """
 *         cdef bool is_presolved = self.getStage() >= SCIP_STAGE_PRESOLVED             # <<<<<<<<<<<<<<
 *         cdef PARTIALDECOMP* decomp = new PARTIALDECOMP(self._scip, not is_presolved)
 *         return PartialDecomposition.create(decomp)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getStage); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyInt_From_SCIP_STAGE(SCIP_STAGE_PRESOLVED); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_is_presolved = __pyx_t_5;

  /* "pygcgopt/gcg.pyx":216
 *         """
 *         cdef bool is_presolved = self.getStage() >= SCIP_STAGE_PRESOLVED
 *         cdef PARTIALDECOMP* decomp = new PARTIALDECOMP(self._scip, not is_presolved)             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(decomp)
 * 
 */
  __pyx_v_decomp = new gcg::PARTIALDECOMP(__pyx_v_self->__pyx_base._scip, (!(__pyx_v_is_presolved != 0)));

  /* "pygcgopt/gcg.pyx":217
 *         cdef bool is_presolved = self.getStage() >= SCIP_STAGE_PRESOLVED
 *         cdef PARTIALDECOMP* decomp = new PARTIALDECOMP(self._scip, not is_presolved)
 *         return PartialDecomposition.create(decomp)             # <<<<<<<<<<<<<<
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create(__pyx_v_decomp); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":202
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 * 
 *     def createDecomposition(self):             # <<<<<<<<<<<<<<
 *         """Creates a new empty PartialDecomposition.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.createDecomposition", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":219
 *         return PartialDecomposition.create(decomp)
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):             # <<<<<<<<<<<<<<
 *         c_solvername = str_conversion(solvername)
 *         c_desc = str_conversion(desc)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_33includePricingSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_32includePricingSolver, "Model.includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_33includePricingSolver = {"includePricingSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_33includePricingSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_32includePricingSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_33includePricingSolver(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_pricingSolver = 0;
  PyObject *__pyx_v_solvername = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_priority = 0;
  PyObject *__pyx_v_heuristicEnabled = 0;
  PyObject *__pyx_v_exactEnabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includePricingSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricingSolver,&__pyx_n_s_solvername,&__pyx_n_s_desc,&__pyx_n_s_priority,&__pyx_n_s_heuristicEnabled,&__pyx_n_s_exactEnabled,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[5] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricingSolver)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_solvername)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includePricingSolver", 0, 3, 6, 1); __PYX_ERR(4, 219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includePricingSolver", 0, 3, 6, 2); __PYX_ERR(4, 219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_priority);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_heuristicEnabled);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_exactEnabled);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 219, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "includePricingSolver") < 0)) __PYX_ERR(4, 219, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_pricingSolver = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)values[0]);
    __pyx_v_solvername = values[1];
    __pyx_v_desc = values[2];
    __pyx_v_priority = values[3];
    __pyx_v_heuristicEnabled = values[4];
    __pyx_v_exactEnabled = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("includePricingSolver", 0, 3, 6, __pyx_nargs); __PYX_ERR(4, 219, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includePricingSolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pricingSolver), __pyx_ptype_8pygcgopt_3gcg_PricingSolver, 1, "pricingSolver", 0))) __PYX_ERR(4, 219, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_32includePricingSolver(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_pricingSolver, __pyx_v_solvername, __pyx_v_desc, __pyx_v_priority, __pyx_v_heuristicEnabled, __pyx_v_exactEnabled);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_32includePricingSolver(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__pyx_v_pricingSolver, PyObject *__pyx_v_solvername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_heuristicEnabled, PyObject *__pyx_v_exactEnabled) {
  PyObject *__pyx_v_c_solvername = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  char const *__pyx_t_7;
  char const *__pyx_t_8;
  int __pyx_t_9;
  SCIP_Bool __pyx_t_10;
  SCIP_Bool __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includePricingSolver", 1);

  /* "pygcgopt/gcg.pyx":220
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):
 *         c_solvername = str_conversion(solvername)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_solvername};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_solvername = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":221
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):
 *         c_solvername = str_conversion(solvername)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 * 
 *         PY_SCIP_CALL(GCGpricerIncludeSolver(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":223
 *         c_desc = str_conversion(desc)
 * 
 *         PY_SCIP_CALL(GCGpricerIncludeSolver(             # <<<<<<<<<<<<<<
 *             (<SCIPModel>self.getMasterProb())._scip, c_solvername, c_desc, priority, heuristicEnabled, exactEnabled, PyPricingSolverUpdate,
 *             PyPricingSolverSolve, PyPricingSolverSolveHeur, PyPricingSolverFree, PyPricingSolverInit, PyPricingSolverExit,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pygcgopt/gcg.pyx":224
 * 
 *         PY_SCIP_CALL(GCGpricerIncludeSolver(
 *             (<SCIPModel>self.getMasterProb())._scip, c_solvername, c_desc, priority, heuristicEnabled, exactEnabled, PyPricingSolverUpdate,             # <<<<<<<<<<<<<<
 *             PyPricingSolverSolve, PyPricingSolverSolveHeur, PyPricingSolverFree, PyPricingSolverInit, PyPricingSolverExit,
 *             PyPricingSolverInitSol, PyPricingSolverExitSol, <GCG_SOLVERDATA*>pricingSolver))
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getMasterProb); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_c_solvername); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(4, 224, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(4, 224, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_priority); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 224, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_heuristicEnabled); if (unlikely((__pyx_t_10 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 224, __pyx_L1_error)
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_exactEnabled); if (unlikely((__pyx_t_11 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 224, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":223
 *         c_desc = str_conversion(desc)
 * 
 *         PY_SCIP_CALL(GCGpricerIncludeSolver(             # <<<<<<<<<<<<<<
 *             (<SCIPModel>self.getMasterProb())._scip, c_solvername, c_desc, priority, heuristicEnabled, exactEnabled, PyPricingSolverUpdate,
 *             PyPricingSolverSolve, PyPricingSolverSolveHeur, PyPricingSolverFree, PyPricingSolverInit, PyPricingSolverExit,
 */
  __pyx_t_5 = __Pyx_PyInt_From_SCIP_RETCODE(GCGpricerIncludeSolver(((struct __pyx_obj_9pyscipopt_4scip_Model *)__pyx_t_3)->_scip, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_f_8pygcgopt_3gcg_PyPricingSolverUpdate, __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolve, __pyx_f_8pygcgopt_3gcg_PyPricingSolverSolveHeur, __pyx_f_8pygcgopt_3gcg_PyPricingSolverFree, __pyx_f_8pygcgopt_3gcg_PyPricingSolverInit, __pyx_f_8pygcgopt_3gcg_PyPricingSolverExit, __pyx_f_8pygcgopt_3gcg_PyPricingSolverInitSol, __pyx_f_8pygcgopt_3gcg_PyPricingSolverExitSol, ((GCG_SOLVERDATA *)__pyx_v_pricingSolver))); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":228
 *             PyPricingSolverInitSol, PyPricingSolverExitSol, <GCG_SOLVERDATA*>pricingSolver))
 * 
 *         pricingSolver.model = <Model>weakref.proxy(self)             # <<<<<<<<<<<<<<
 *         pricingSolver.solvername = solvername
 *         Py_INCREF(pricingSolver)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_proxy); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF((PyObject *)__pyx_v_pricingSolver->model);
  __Pyx_DECREF((PyObject *)__pyx_v_pricingSolver->model);
  __pyx_v_pricingSolver->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pygcgopt/gcg.pyx":229
 * 
 *         pricingSolver.model = <Model>weakref.proxy(self)
 *         pricingSolver.solvername = solvername             # <<<<<<<<<<<<<<
 *         Py_INCREF(pricingSolver)
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_solvername))||((__pyx_v_solvername) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_solvername))) __PYX_ERR(4, 229, __pyx_L1_error)
  __pyx_t_5 = __pyx_v_solvername;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_pricingSolver->solvername);
  __Pyx_DECREF(__pyx_v_pricingSolver->solvername);
  __pyx_v_pricingSolver->solvername = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pygcgopt/gcg.pyx":230
 *         pricingSolver.model = <Model>weakref.proxy(self)
 *         pricingSolver.solvername = solvername
 *         Py_INCREF(pricingSolver)             # <<<<<<<<<<<<<<
 * 
 *     def listPricingSolvers(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_pricingSolver));

  /* "pygcgopt/gcg.pyx":219
 *         return PartialDecomposition.create(decomp)
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):             # <<<<<<<<<<<<<<
 *         c_solvername = str_conversion(solvername)
 *         c_desc = str_conversion(desc)
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includePricingSolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_solvername);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":232
 *         Py_INCREF(pricingSolver)
 * 
 *     def listPricingSolvers(self):             # <<<<<<<<<<<<<<
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_35listPricingSolvers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_34listPricingSolvers, "Model.listPricingSolvers(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_35listPricingSolvers = {"listPricingSolvers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_35listPricingSolvers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_34listPricingSolvers};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_35listPricingSolvers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listPricingSolvers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listPricingSolvers", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listPricingSolvers", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_34listPricingSolvers(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_34listPricingSolvers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  struct __pyx_obj_9pyscipopt_4scip_Model *__pyx_v_mp = 0;
  int __pyx_v_n_pricing_solvers;
  GCG_SOLVER **__pyx_v_pricing_solvers;
  int __pyx_9genexpr20__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("listPricingSolvers", 1);

  /* "pygcgopt/gcg.pyx":233
 * 
 *     def listPricingSolvers(self):
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()             # <<<<<<<<<<<<<<
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 *         cdef GCG_SOLVER** pricing_solvers = GCGpricerGetSolvers(mp._scip)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getMasterProb); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_mp = ((struct __pyx_obj_9pyscipopt_4scip_Model *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":234
 *     def listPricingSolvers(self):
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)             # <<<<<<<<<<<<<<
 *         cdef GCG_SOLVER** pricing_solvers = GCGpricerGetSolvers(mp._scip)
 * 
 */
  __pyx_v_n_pricing_solvers = GCGpricerGetNSolvers(__pyx_v_mp->_scip);

  /* "pygcgopt/gcg.pyx":235
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 *         cdef GCG_SOLVER** pricing_solvers = GCGpricerGetSolvers(mp._scip)             # <<<<<<<<<<<<<<
 * 
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]
 */
  __pyx_v_pricing_solvers = GCGpricerGetSolvers(__pyx_v_mp->_scip);

  /* "pygcgopt/gcg.pyx":237
 *         cdef GCG_SOLVER** pricing_solvers = GCGpricerGetSolvers(mp._scip)
 * 
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]             # <<<<<<<<<<<<<<
 * 
 *     def setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_v_n_pricing_solvers;
    __pyx_t_6 = __pyx_t_5;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_9genexpr20__pyx_v_i = __pyx_t_7;
      __pyx_t_8 = GCGsolverGetName((__pyx_v_pricing_solvers[__pyx_9genexpr20__pyx_v_i]));
      __pyx_t_9 = __Pyx_ssize_strlen(__pyx_t_8); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(4, 237, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_8, 0, __pyx_t_9, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(4, 237, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":232
 *         Py_INCREF(pricingSolver)
 * 
 *     def listPricingSolvers(self):             # <<<<<<<<<<<<<<
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listPricingSolvers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_mp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":239
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]
 * 
 *     def setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact and heuristic solving for the specified pricing solver.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled, "Model.setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True)\nEnables or disables exact and heuristic solving for the specified pricing solver.\n\n        :param pricing_solver_name: The name of the pricing solver.\n        :param is_enabled: Decides weather the pricing solver should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameters \"pricingsolver/<name>/exactenabled\" and\n        \"pricingsolver/<name>/heurenabled\".\n\n        Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled = {"setPricingSolverEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pricing_solver_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPricingSolverEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricing_solver_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricing_solver_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 239, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 239, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPricingSolverEnabled") < 0)) __PYX_ERR(4, 239, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_pricing_solver_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPricingSolverEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 239, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_pricing_solver_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPricingSolverEnabled", 1);

  /* "pygcgopt/gcg.pyx":250
 *         Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.
 *         """
 *         self.setPricingSolverExactEnabled(pricing_solver_name, is_enabled)             # <<<<<<<<<<<<<<
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setPricingSolverExactEnabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_pricing_solver_name, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":251
 *         """
 *         self.setPricingSolverExactEnabled(pricing_solver_name, is_enabled)
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setPricingSolverHeuristicEnabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_pricing_solver_name, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":239
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]
 * 
 *     def setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact and heuristic solving for the specified pricing solver.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":253
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)
 * 
 *     def setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact solving for the specified pricing solver.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled, "Model.setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True)\nEnables or disables exact solving for the specified pricing solver.\n\n        :param pricing_solver_name: The name of the pricing solver.\n        :param is_enabled: Decides weather the pricing solver should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"pricingsolver/<name>/exactenabled\".\n\n        Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled = {"setPricingSolverExactEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pricing_solver_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPricingSolverExactEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricing_solver_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricing_solver_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 253, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 253, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPricingSolverExactEnabled") < 0)) __PYX_ERR(4, 253, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_pricing_solver_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPricingSolverExactEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 253, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverExactEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_pricing_solver_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPricingSolverExactEnabled", 1);

  /* "pygcgopt/gcg.pyx":263
 *         Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.
 *         """
 *         self.setBoolParam("pricingsolver/{}/exactenabled".format(pricing_solver_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_pricingsolver_exactenabled, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_pricing_solver_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":253
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)
 * 
 *     def setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact solving for the specified pricing solver.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverExactEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":265
 *         self.setBoolParam("pricingsolver/{}/exactenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables heuristic solving for the specified pricing solver.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled, "Model.setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True)\nEnables or disables heuristic solving for the specified pricing solver.\n\n        :param pricing_solver_name: The name of the pricing solver.\n        :param is_enabled: Decides weather the pricing solver should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"pricingsolver/<name>/heurenabled\".\n\n        Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled = {"setPricingSolverHeuristicEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pricing_solver_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPricingSolverHeuristicEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pricing_solver_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pricing_solver_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 265, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 265, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPricingSolverHeuristicEnabled") < 0)) __PYX_ERR(4, 265, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_pricing_solver_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPricingSolverHeuristicEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 265, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverHeuristicEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_pricing_solver_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_pricing_solver_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPricingSolverHeuristicEnabled", 1);

  /* "pygcgopt/gcg.pyx":275
 *         Use :meth:`listPricingSolvers()` to obtain a list of all pricing solvers.
 *         """
 *         self.setBoolParam("pricingsolver/{}/heurenabled".format(pricing_solver_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_pricingsolver_heurenabled, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_pricing_solver_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":265
 *         self.setBoolParam("pricingsolver/{}/exactenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables heuristic solving for the specified pricing solver.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setPricingSolverHeuristicEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":277
 *         self.setBoolParam("pricingsolver/{}/heurenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a constraint classifier
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_43includeConsClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_42includeConsClassifier, "Model.includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True)\nincludes a constraint classifier\n\n        :param consclassifier: an object of a subclass of consclassifier#ConsClassifier.\n        :param consclassifiername: name of constraint classifier\n        :param desc: description of constraint classifier\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_43includeConsClassifier = {"includeConsClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_43includeConsClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_42includeConsClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_43includeConsClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_consclassifier = 0;
  PyObject *__pyx_v_consclassifiername = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_priority = 0;
  PyObject *__pyx_v_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includeConsClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_consclassifier,&__pyx_n_s_consclassifiername,&__pyx_n_s_desc,&__pyx_n_s_priority,&__pyx_n_s_enabled,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consclassifier)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 277, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_consclassifiername)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 277, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeConsClassifier", 0, 3, 5, 1); __PYX_ERR(4, 277, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 277, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeConsClassifier", 0, 3, 5, 2); __PYX_ERR(4, 277, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_priority);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 277, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_enabled);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 277, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "includeConsClassifier") < 0)) __PYX_ERR(4, 277, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_consclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)values[0]);
    __pyx_v_consclassifiername = values[1];
    __pyx_v_desc = values[2];
    __pyx_v_priority = values[3];
    __pyx_v_enabled = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("includeConsClassifier", 0, 3, 5, __pyx_nargs); __PYX_ERR(4, 277, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeConsClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_consclassifier), __pyx_ptype_8pygcgopt_3gcg_ConsClassifier, 1, "consclassifier", 0))) __PYX_ERR(4, 277, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_42includeConsClassifier(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_consclassifier, __pyx_v_consclassifiername, __pyx_v_desc, __pyx_v_priority, __pyx_v_enabled);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_42includeConsClassifier(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__pyx_v_consclassifier, PyObject *__pyx_v_consclassifiername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled) {
  PyObject *__pyx_v_c_consclassifiername = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_t_7;
  SCIP_Bool __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includeConsClassifier", 1);

  /* "pygcgopt/gcg.pyx":284
 *         :param desc: description of constraint classifier
 *         """
 *         c_consclassifiername = str_conversion(consclassifiername)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeConsClassifier(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_consclassifiername};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_consclassifiername = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":285
 *         """
 *         c_consclassifiername = str_conversion(consclassifiername)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGincludeConsClassifier(
 *             self._scip, c_consclassifiername, c_desc, priority, enabled,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":286
 *         c_consclassifiername = str_conversion(consclassifiername)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeConsClassifier(             # <<<<<<<<<<<<<<
 *             self._scip, c_consclassifiername, c_desc, priority, enabled,
 *             <GCG_CLASSIFIERDATA*>consclassifier, PyConsClassifierFree, PyConsClassifierClassify))
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pygcgopt/gcg.pyx":287
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeConsClassifier(
 *             self._scip, c_consclassifiername, c_desc, priority, enabled,             # <<<<<<<<<<<<<<
 *             <GCG_CLASSIFIERDATA*>consclassifier, PyConsClassifierFree, PyConsClassifierClassify))
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_consclassifiername); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 287, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 287, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_priority); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 287, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_enabled); if (unlikely((__pyx_t_8 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 287, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":286
 *         c_consclassifiername = str_conversion(consclassifiername)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeConsClassifier(             # <<<<<<<<<<<<<<
 *             self._scip, c_consclassifiername, c_desc, priority, enabled,
 *             <GCG_CLASSIFIERDATA*>consclassifier, PyConsClassifierFree, PyConsClassifierClassify))
 */
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGincludeConsClassifier(__pyx_v_self->__pyx_base._scip, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, ((GCG_CLASSIFIERDATA *)__pyx_v_consclassifier), __pyx_f_8pygcgopt_3gcg_PyConsClassifierFree, __pyx_f_8pygcgopt_3gcg_PyConsClassifierClassify)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":290
 *             <GCG_CLASSIFIERDATA*>consclassifier, PyConsClassifierFree, PyConsClassifierClassify))
 * 
 *         consclassifier.model = <Model>weakref.proxy(self)             # <<<<<<<<<<<<<<
 *         consclassifier.name = consclassifiername
 *         Py_INCREF(consclassifier)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_proxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF((PyObject *)__pyx_v_consclassifier->model);
  __Pyx_DECREF((PyObject *)__pyx_v_consclassifier->model);
  __pyx_v_consclassifier->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":291
 * 
 *         consclassifier.model = <Model>weakref.proxy(self)
 *         consclassifier.name = consclassifiername             # <<<<<<<<<<<<<<
 *         Py_INCREF(consclassifier)
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_consclassifiername))||((__pyx_v_consclassifiername) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_consclassifiername))) __PYX_ERR(4, 291, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_consclassifiername;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_consclassifier->name);
  __Pyx_DECREF(__pyx_v_consclassifier->name);
  __pyx_v_consclassifier->name = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":292
 *         consclassifier.model = <Model>weakref.proxy(self)
 *         consclassifier.name = consclassifiername
 *         Py_INCREF(consclassifier)             # <<<<<<<<<<<<<<
 * 
 *     def getNConsClassifiers(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_consclassifier));

  /* "pygcgopt/gcg.pyx":277
 *         self.setBoolParam("pricingsolver/{}/heurenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a constraint classifier
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeConsClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_consclassifiername);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":294
 *         Py_INCREF(consclassifier)
 * 
 *     def getNConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all constraint classifiers
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_45getNConsClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_44getNConsClassifiers, "Model.getNConsClassifiers(self)\nreturns the number of all constraint classifiers\n\n        :return: number of constraint classifiers\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_45getNConsClassifiers = {"getNConsClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_45getNConsClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_44getNConsClassifiers};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_45getNConsClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNConsClassifiers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNConsClassifiers", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNConsClassifiers", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_44getNConsClassifiers(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_44getNConsClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_consclassifiers;
  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("getNConsClassifiers", 1);

  /* "pygcgopt/gcg.pyx":300
 *         :rtype: int
 *         """
 *         cdef int n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(self._scip)             # <<<<<<<<<<<<<<
 *         return n_consclassifiers
 * 
 */
  __pyx_v_n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":301
 *         """
 *         cdef int n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(self._scip)
 *         return n_consclassifiers             # <<<<<<<<<<<<<<
 * 
 *     def listConsClassifiers(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_n_consclassifiers); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":294
 *         Py_INCREF(consclassifier)
 * 
 *     def getNConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all constraint classifiers
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getNConsClassifiers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":303
 *         return n_consclassifiers
 * 
 *     def listConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all constraint classifiers that are currently included
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_47listConsClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_46listConsClassifiers, "Model.listConsClassifiers(self)\nlists all constraint classifiers that are currently included\n\n        :return: list of strings of the constraint classifier names\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_47listConsClassifiers = {"listConsClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_47listConsClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_46listConsClassifiers};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_47listConsClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listConsClassifiers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listConsClassifiers", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listConsClassifiers", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_46listConsClassifiers(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_46listConsClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_consclassifiers;
  GCG_CONSCLASSIFIER **__pyx_v_consclassifiers;
  int __pyx_9genexpr21__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("listConsClassifiers", 1);

  /* "pygcgopt/gcg.pyx":308
 *         :return: list of strings of the constraint classifier names
 *         """
 *         cdef int n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(self._scip)             # <<<<<<<<<<<<<<
 *         cdef GCG_CONSCLASSIFIER** consclassifiers = GCGconshdlrDecompGetConsClassifiers(self._scip)
 * 
 */
  __pyx_v_n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":309
 *         """
 *         cdef int n_consclassifiers = GCGconshdlrDecompGetNConsClassifiers(self._scip)
 *         cdef GCG_CONSCLASSIFIER** consclassifiers = GCGconshdlrDecompGetConsClassifiers(self._scip)             # <<<<<<<<<<<<<<
 * 
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]
 */
  __pyx_v_consclassifiers = GCGconshdlrDecompGetConsClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":311
 *         cdef GCG_CONSCLASSIFIER** consclassifiers = GCGconshdlrDecompGetConsClassifiers(self._scip)
 * 
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]             # <<<<<<<<<<<<<<
 * 
 *     def includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_consclassifiers;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr21__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = GCGconsClassifierGetName((__pyx_v_consclassifiers[__pyx_9genexpr21__pyx_v_i]));
      __pyx_t_6 = __Pyx_ssize_strlen(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(4, 311, __pyx_L1_error)
      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_5, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(4, 311, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":303
 *         return n_consclassifiers
 * 
 *     def listConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all constraint classifiers that are currently included
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listConsClassifiers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":313
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]
 * 
 *     def includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a variable classifier
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_49includeVarClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_48includeVarClassifier, "Model.includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True)\nincludes a variable classifier\n\n        :param varclassifier: an object of a subclass of varclassifier#VarClassifier.\n        :param varclassifiername: name of variable classifier\n        :param desc: description of variable classifier\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_49includeVarClassifier = {"includeVarClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_49includeVarClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_48includeVarClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_49includeVarClassifier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_varclassifier = 0;
  PyObject *__pyx_v_varclassifiername = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_priority = 0;
  PyObject *__pyx_v_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includeVarClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varclassifier,&__pyx_n_s_varclassifiername,&__pyx_n_s_desc,&__pyx_n_s_priority,&__pyx_n_s_enabled,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varclassifier)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varclassifiername)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeVarClassifier", 0, 3, 5, 1); __PYX_ERR(4, 313, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeVarClassifier", 0, 3, 5, 2); __PYX_ERR(4, 313, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_priority);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_enabled);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "includeVarClassifier") < 0)) __PYX_ERR(4, 313, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_varclassifier = ((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)values[0]);
    __pyx_v_varclassifiername = values[1];
    __pyx_v_desc = values[2];
    __pyx_v_priority = values[3];
    __pyx_v_enabled = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("includeVarClassifier", 0, 3, 5, __pyx_nargs); __PYX_ERR(4, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeVarClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varclassifier), __pyx_ptype_8pygcgopt_3gcg_VarClassifier, 1, "varclassifier", 0))) __PYX_ERR(4, 313, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_48includeVarClassifier(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_varclassifier, __pyx_v_varclassifiername, __pyx_v_desc, __pyx_v_priority, __pyx_v_enabled);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_48includeVarClassifier(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__pyx_v_varclassifier, PyObject *__pyx_v_varclassifiername, PyObject *__pyx_v_desc, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled) {
  PyObject *__pyx_v_c_varclassifiername = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_t_7;
  SCIP_Bool __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includeVarClassifier", 1);

  /* "pygcgopt/gcg.pyx":320
 *         :param desc: description of variable classifier
 *         """
 *         c_varclassifiername = str_conversion(varclassifiername)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeVarClassifier(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_varclassifiername};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 320, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_varclassifiername = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":321
 *         """
 *         c_varclassifiername = str_conversion(varclassifiername)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGincludeVarClassifier(
 *             self._scip, c_varclassifiername, c_desc, priority, enabled,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":322
 *         c_varclassifiername = str_conversion(varclassifiername)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeVarClassifier(             # <<<<<<<<<<<<<<
 *             self._scip, c_varclassifiername, c_desc, priority, enabled,
 *             <GCG_CLASSIFIERDATA*>varclassifier, PyVarClassifierFree, PyVarClassifierClassify))
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pygcgopt/gcg.pyx":323
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeVarClassifier(
 *             self._scip, c_varclassifiername, c_desc, priority, enabled,             # <<<<<<<<<<<<<<
 *             <GCG_CLASSIFIERDATA*>varclassifier, PyVarClassifierFree, PyVarClassifierClassify))
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_varclassifiername); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 323, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 323, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_priority); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 323, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_enabled); if (unlikely((__pyx_t_8 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 323, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":322
 *         c_varclassifiername = str_conversion(varclassifiername)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeVarClassifier(             # <<<<<<<<<<<<<<
 *             self._scip, c_varclassifiername, c_desc, priority, enabled,
 *             <GCG_CLASSIFIERDATA*>varclassifier, PyVarClassifierFree, PyVarClassifierClassify))
 */
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGincludeVarClassifier(__pyx_v_self->__pyx_base._scip, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, ((GCG_CLASSIFIERDATA *)__pyx_v_varclassifier), __pyx_f_8pygcgopt_3gcg_PyVarClassifierFree, __pyx_f_8pygcgopt_3gcg_PyVarClassifierClassify)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":326
 *             <GCG_CLASSIFIERDATA*>varclassifier, PyVarClassifierFree, PyVarClassifierClassify))
 * 
 *         varclassifier.model = <Model>weakref.proxy(self)             # <<<<<<<<<<<<<<
 *         varclassifier.name = varclassifiername
 *         Py_INCREF(varclassifier)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_proxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF((PyObject *)__pyx_v_varclassifier->model);
  __Pyx_DECREF((PyObject *)__pyx_v_varclassifier->model);
  __pyx_v_varclassifier->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":327
 * 
 *         varclassifier.model = <Model>weakref.proxy(self)
 *         varclassifier.name = varclassifiername             # <<<<<<<<<<<<<<
 *         Py_INCREF(varclassifier)
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_varclassifiername))||((__pyx_v_varclassifiername) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_varclassifiername))) __PYX_ERR(4, 327, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_varclassifiername;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_varclassifier->name);
  __Pyx_DECREF(__pyx_v_varclassifier->name);
  __pyx_v_varclassifier->name = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":328
 *         varclassifier.model = <Model>weakref.proxy(self)
 *         varclassifier.name = varclassifiername
 *         Py_INCREF(varclassifier)             # <<<<<<<<<<<<<<
 * 
 *     def getNVarClassifiers(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_varclassifier));

  /* "pygcgopt/gcg.pyx":313
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]
 * 
 *     def includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a variable classifier
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeVarClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_varclassifiername);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":330
 *         Py_INCREF(varclassifier)
 * 
 *     def getNVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all variable classifiers
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_51getNVarClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_50getNVarClassifiers, "Model.getNVarClassifiers(self)\nreturns the number of all variable classifiers\n\n        :return: number of variable classifiers\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_51getNVarClassifiers = {"getNVarClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_51getNVarClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_50getNVarClassifiers};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_51getNVarClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getNVarClassifiers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getNVarClassifiers", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getNVarClassifiers", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_50getNVarClassifiers(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_50getNVarClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_varclassifiers;
  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("getNVarClassifiers", 1);

  /* "pygcgopt/gcg.pyx":336
 *         :rtype: int
 *         """
 *         cdef int n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(self._scip)             # <<<<<<<<<<<<<<
 *         return n_varclassifiers
 * 
 */
  __pyx_v_n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":337
 *         """
 *         cdef int n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(self._scip)
 *         return n_varclassifiers             # <<<<<<<<<<<<<<
 * 
 *     def listVarClassifiers(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_n_varclassifiers); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":330
 *         Py_INCREF(varclassifier)
 * 
 *     def getNVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all variable classifiers
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getNVarClassifiers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":339
 *         return n_varclassifiers
 * 
 *     def listVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all variable classifiers that are currently included
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_53listVarClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_52listVarClassifiers, "Model.listVarClassifiers(self)\nlists all variable classifiers that are currently included\n\n        :return: list of strings of the variable classifier names\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_53listVarClassifiers = {"listVarClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_53listVarClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_52listVarClassifiers};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_53listVarClassifiers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listVarClassifiers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listVarClassifiers", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listVarClassifiers", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_52listVarClassifiers(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_52listVarClassifiers(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_varclassifiers;
  GCG_VARCLASSIFIER **__pyx_v_varclassifiers;
  int __pyx_9genexpr22__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("listVarClassifiers", 1);

  /* "pygcgopt/gcg.pyx":344
 *         :return: list of strings of the variable classifier names
 *         """
 *         cdef int n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(self._scip)             # <<<<<<<<<<<<<<
 *         cdef GCG_VARCLASSIFIER** varclassifiers = GCGconshdlrDecompGetVarClassifiers(self._scip)
 * 
 */
  __pyx_v_n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":345
 *         """
 *         cdef int n_varclassifiers = GCGconshdlrDecompGetNVarClassifiers(self._scip)
 *         cdef GCG_VARCLASSIFIER** varclassifiers = GCGconshdlrDecompGetVarClassifiers(self._scip)             # <<<<<<<<<<<<<<
 * 
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]
 */
  __pyx_v_varclassifiers = GCGconshdlrDecompGetVarClassifiers(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":347
 *         cdef GCG_VARCLASSIFIER** varclassifiers = GCGconshdlrDecompGetVarClassifiers(self._scip)
 * 
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]             # <<<<<<<<<<<<<<
 * 
 *     def setVarClassifierEnabled(self, varclassifier_name, is_enabled=True):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_varclassifiers;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr22__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = GCGvarClassifierGetName((__pyx_v_varclassifiers[__pyx_9genexpr22__pyx_v_i]));
      __pyx_t_6 = __Pyx_ssize_strlen(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(4, 347, __pyx_L1_error)
      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_5, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(4, 347, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":339
 *         return n_varclassifiers
 * 
 *     def listVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all variable classifiers that are currently included
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listVarClassifiers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":349
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]
 * 
 *     def setVarClassifierEnabled(self, varclassifier_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """enables or disables a variable classifier
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled, "Model.setVarClassifierEnabled(self, varclassifier_name, is_enabled=True)\nenables or disables a variable classifier\n\n        :param varclassifier_name: the name of the variable classifier\n        :param is_enabled: decides weather the variable classifier should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"detection/classification/varclassifier/<name>/enabled\".\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled = {"setVarClassifierEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varclassifier_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVarClassifierEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varclassifier_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_varclassifier_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 349, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 349, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVarClassifierEnabled") < 0)) __PYX_ERR(4, 349, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_varclassifier_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVarClassifierEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 349, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setVarClassifierEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_varclassifier_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_varclassifier_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVarClassifierEnabled", 1);

  /* "pygcgopt/gcg.pyx":358
 *         """
 *         # TODO test if varclassifier_name exists
 *         self.setBoolParam("detection/classification/varclassifier/{}/enabled".format(varclassifier_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_detection_classification_varclas, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_varclassifier_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":349
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]
 * 
 *     def setVarClassifierEnabled(self, varclassifier_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """enables or disables a variable classifier
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setVarClassifierEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":360
 *         self.setBoolParam("detection/classification/varclassifier/{}/enabled".format(varclassifier_name), is_enabled)
 * 
 *     def includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False):             # <<<<<<<<<<<<<<
 *         """includes a detector
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_57includeDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_56includeDetector, "Model.includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False)\nincludes a detector\n\n        :param detector: An object of a subclass of detector#Detector.\n        :param detectorname: name of detector\n        :param desc: description of detector\n\n        For an explanation for all arguments, see :meth:`GCGincludeDetector()`.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_57includeDetector = {"includeDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_57includeDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_56includeDetector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_57includeDetector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector = 0;
  PyObject *__pyx_v_detectorname = 0;
  PyObject *__pyx_v_decchar = 0;
  PyObject *__pyx_v_desc = 0;
  PyObject *__pyx_v_freqcallround = 0;
  PyObject *__pyx_v_maxcallround = 0;
  PyObject *__pyx_v_mincallround = 0;
  PyObject *__pyx_v_freqcallroundoriginal = 0;
  PyObject *__pyx_v_maxcallroundoriginal = 0;
  PyObject *__pyx_v_mincallroundoriginal = 0;
  PyObject *__pyx_v_priority = 0;
  PyObject *__pyx_v_enabled = 0;
  PyObject *__pyx_v_enabledfinishing = 0;
  PyObject *__pyx_v_enabledpostprocessing = 0;
  PyObject *__pyx_v_skip = 0;
  PyObject *__pyx_v_usefulrecall = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includeDetector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector,&__pyx_n_s_detectorname,&__pyx_n_s_decchar,&__pyx_n_s_desc,&__pyx_n_s_freqcallround,&__pyx_n_s_maxcallround,&__pyx_n_s_mincallround,&__pyx_n_s_freqcallroundoriginal,&__pyx_n_s_maxcallroundoriginal,&__pyx_n_s_mincallroundoriginal,&__pyx_n_s_priority,&__pyx_n_s_enabled,&__pyx_n_s_enabledfinishing,&__pyx_n_s_enabledpostprocessing,&__pyx_n_s_skip,&__pyx_n_s_usefulrecall,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[5] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__10);
    values[6] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[7] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_1));
    values[8] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__11);
    values[9] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[10] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_int_0));
    values[11] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    values[12] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[13] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[14] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    values[15] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case 16: values[15] = __Pyx_Arg_FASTCALL(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = __Pyx_Arg_FASTCALL(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = __Pyx_Arg_FASTCALL(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = __Pyx_Arg_FASTCALL(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = __Pyx_Arg_FASTCALL(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detectorname)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeDetector", 0, 4, 16, 1); __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_decchar)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeDetector", 0, 4, 16, 2); __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeDetector", 0, 4, 16, 3); __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_freqcallround);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxcallround);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mincallround);
          if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_freqcallroundoriginal);
          if (value) { values[7] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxcallroundoriginal);
          if (value) { values[8] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  9:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mincallroundoriginal);
          if (value) { values[9] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 10:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_priority);
          if (value) { values[10] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 11:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_enabled);
          if (value) { values[11] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 12:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_enabledfinishing);
          if (value) { values[12] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 13:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_enabledpostprocessing);
          if (value) { values[13] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 14:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_skip);
          if (value) { values[14] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case 15:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefulrecall);
          if (value) { values[15] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 360, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "includeDetector") < 0)) __PYX_ERR(4, 360, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case 16: values[15] = __Pyx_Arg_FASTCALL(__pyx_args, 15);
        CYTHON_FALLTHROUGH;
        case 15: values[14] = __Pyx_Arg_FASTCALL(__pyx_args, 14);
        CYTHON_FALLTHROUGH;
        case 14: values[13] = __Pyx_Arg_FASTCALL(__pyx_args, 13);
        CYTHON_FALLTHROUGH;
        case 13: values[12] = __Pyx_Arg_FASTCALL(__pyx_args, 12);
        CYTHON_FALLTHROUGH;
        case 12: values[11] = __Pyx_Arg_FASTCALL(__pyx_args, 11);
        CYTHON_FALLTHROUGH;
        case 11: values[10] = __Pyx_Arg_FASTCALL(__pyx_args, 10);
        CYTHON_FALLTHROUGH;
        case 10: values[9] = __Pyx_Arg_FASTCALL(__pyx_args, 9);
        CYTHON_FALLTHROUGH;
        case  9: values[8] = __Pyx_Arg_FASTCALL(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_detector = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)values[0]);
    __pyx_v_detectorname = values[1];
    __pyx_v_decchar = values[2];
    __pyx_v_desc = values[3];
    __pyx_v_freqcallround = values[4];
    __pyx_v_maxcallround = values[5];
    __pyx_v_mincallround = values[6];
    __pyx_v_freqcallroundoriginal = values[7];
    __pyx_v_maxcallroundoriginal = values[8];
    __pyx_v_mincallroundoriginal = values[9];
    __pyx_v_priority = values[10];
    __pyx_v_enabled = values[11];
    __pyx_v_enabledfinishing = values[12];
    __pyx_v_enabledpostprocessing = values[13];
    __pyx_v_skip = values[14];
    __pyx_v_usefulrecall = values[15];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("includeDetector", 0, 4, 16, __pyx_nargs); __PYX_ERR(4, 360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeDetector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_detector), __pyx_ptype_8pygcgopt_3gcg_Detector, 1, "detector", 0))) __PYX_ERR(4, 360, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_56includeDetector(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_detector, __pyx_v_detectorname, __pyx_v_decchar, __pyx_v_desc, __pyx_v_freqcallround, __pyx_v_maxcallround, __pyx_v_mincallround, __pyx_v_freqcallroundoriginal, __pyx_v_maxcallroundoriginal, __pyx_v_mincallroundoriginal, __pyx_v_priority, __pyx_v_enabled, __pyx_v_enabledfinishing, __pyx_v_enabledpostprocessing, __pyx_v_skip, __pyx_v_usefulrecall);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_56includeDetector(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Detector *__pyx_v_detector, PyObject *__pyx_v_detectorname, PyObject *__pyx_v_decchar, PyObject *__pyx_v_desc, PyObject *__pyx_v_freqcallround, PyObject *__pyx_v_maxcallround, PyObject *__pyx_v_mincallround, PyObject *__pyx_v_freqcallroundoriginal, PyObject *__pyx_v_maxcallroundoriginal, PyObject *__pyx_v_mincallroundoriginal, PyObject *__pyx_v_priority, PyObject *__pyx_v_enabled, PyObject *__pyx_v_enabledfinishing, PyObject *__pyx_v_enabledpostprocessing, PyObject *__pyx_v_skip, PyObject *__pyx_v_usefulrecall) {
  PyObject *__pyx_v_c_detectorname = NULL;
  long __pyx_v_c_decchar;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  long __pyx_t_7;
  char const *__pyx_t_8;
  char const *__pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  SCIP_Bool __pyx_t_17;
  SCIP_Bool __pyx_t_18;
  SCIP_Bool __pyx_t_19;
  SCIP_Bool __pyx_t_20;
  SCIP_Bool __pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includeDetector", 1);

  /* "pygcgopt/gcg.pyx":369
 *         For an explanation for all arguments, see :meth:`GCGincludeDetector()`.
 *         """
 *         if len(decchar) != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError("Length of value for 'decchar' must be 1")
 * 
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_decchar); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(4, 369, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 1);
  if (unlikely(__pyx_t_2)) {

    /* "pygcgopt/gcg.pyx":370
 *         """
 *         if len(decchar) != 1:
 *             raise ValueError("Length of value for 'decchar' must be 1")             # <<<<<<<<<<<<<<
 * 
 *         c_detectorname = str_conversion(detectorname)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 370, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(4, 370, __pyx_L1_error)

    /* "pygcgopt/gcg.pyx":369
 *         For an explanation for all arguments, see :meth:`GCGincludeDetector()`.
 *         """
 *         if len(decchar) != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError("Length of value for 'decchar' must be 1")
 * 
 */
  }

  /* "pygcgopt/gcg.pyx":372
 *             raise ValueError("Length of value for 'decchar' must be 1")
 * 
 *         c_detectorname = str_conversion(detectorname)             # <<<<<<<<<<<<<<
 *         c_decchar = ord(str_conversion(decchar))
 *         c_desc = str_conversion(desc)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_detectorname};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_c_detectorname = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":373
 * 
 *         c_detectorname = str_conversion(detectorname)
 *         c_decchar = ord(str_conversion(decchar))             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeDetector(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_decchar};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyObject_Ord(__pyx_t_3); if (unlikely(__pyx_t_7 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(4, 373, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_c_decchar = __pyx_t_7;

  /* "pygcgopt/gcg.pyx":374
 *         c_detectorname = str_conversion(detectorname)
 *         c_decchar = ord(str_conversion(decchar))
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGincludeDetector(
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_desc};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_c_desc = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":375
 *         c_decchar = ord(str_conversion(decchar))
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeDetector(             # <<<<<<<<<<<<<<
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,
 *             freqcallroundoriginal, maxcallroundoriginal, mincallroundoriginal, priority, enabled, enabledfinishing,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pygcgopt/gcg.pyx":376
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeDetector(
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,             # <<<<<<<<<<<<<<
 *             freqcallroundoriginal, maxcallroundoriginal, mincallroundoriginal, priority, enabled, enabledfinishing,
 *             enabledpostprocessing, skip, usefulrecall, <GCG_DETECTORDATA*>detector, PyDetectorFree, PyDetectorInit,
 */
  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_c_detectorname); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(4, 376, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(4, 376, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_freqcallround); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 376, __pyx_L1_error)
  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_maxcallround); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 376, __pyx_L1_error)
  __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_mincallround); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 376, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":377
 *         PY_SCIP_CALL(GCGincludeDetector(
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,
 *             freqcallroundoriginal, maxcallroundoriginal, mincallroundoriginal, priority, enabled, enabledfinishing,             # <<<<<<<<<<<<<<
 *             enabledpostprocessing, skip, usefulrecall, <GCG_DETECTORDATA*>detector, PyDetectorFree, PyDetectorInit,
 *             PyDetectorExit, PyDetectorPropagatePartialdec, PyDetectorFinishPartialdec, PyDetectorPostprocessPartialdec,
 */
  __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_freqcallroundoriginal); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)
  __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_maxcallroundoriginal); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)
  __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_v_mincallroundoriginal); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)
  __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_v_priority); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)
  __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_enabled); if (unlikely((__pyx_t_17 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)
  __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_v_enabledfinishing); if (unlikely((__pyx_t_18 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 377, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":378
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,
 *             freqcallroundoriginal, maxcallroundoriginal, mincallroundoriginal, priority, enabled, enabledfinishing,
 *             enabledpostprocessing, skip, usefulrecall, <GCG_DETECTORDATA*>detector, PyDetectorFree, PyDetectorInit,             # <<<<<<<<<<<<<<
 *             PyDetectorExit, PyDetectorPropagatePartialdec, PyDetectorFinishPartialdec, PyDetectorPostprocessPartialdec,
 *             PyDetectorSetParamAggressive, PyDetectorSetParamDefault, PyDetectorSetParamFast))
 */
  __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_v_enabledpostprocessing); if (unlikely((__pyx_t_19 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error)
  __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_v_skip); if (unlikely((__pyx_t_20 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error)
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_v_usefulrecall); if (unlikely((__pyx_t_21 == ((SCIP_Bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":375
 *         c_decchar = ord(str_conversion(decchar))
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeDetector(             # <<<<<<<<<<<<<<
 *             self._scip, c_detectorname, c_decchar, c_desc, freqcallround, maxcallround, mincallround,
 *             freqcallroundoriginal, maxcallroundoriginal, mincallroundoriginal, priority, enabled, enabledfinishing,
 */
  __pyx_t_5 = __Pyx_PyInt_From_SCIP_RETCODE(GCGincludeDetector(__pyx_v_self->__pyx_base._scip, __pyx_t_8, __pyx_v_c_decchar, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_t_19, __pyx_t_20, __pyx_t_21, ((GCG_DETECTORDATA *)__pyx_v_detector), __pyx_f_8pygcgopt_3gcg_PyDetectorFree, __pyx_f_8pygcgopt_3gcg_PyDetectorInit, __pyx_f_8pygcgopt_3gcg_PyDetectorExit, __pyx_f_8pygcgopt_3gcg_PyDetectorPropagatePartialdec, __pyx_f_8pygcgopt_3gcg_PyDetectorFinishPartialdec, __pyx_f_8pygcgopt_3gcg_PyDetectorPostprocessPartialdec, __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamAggressive, __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamDefault, __pyx_f_8pygcgopt_3gcg_PyDetectorSetParamFast)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_22 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_22)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_22);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_t_5};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 375, __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;

  /* "pygcgopt/gcg.pyx":382
 *             PyDetectorSetParamAggressive, PyDetectorSetParamDefault, PyDetectorSetParamFast))
 * 
 *         detector.model = <Model>weakref.proxy(self)             # <<<<<<<<<<<<<<
 *         detector.detectorname = detectorname
 *         Py_INCREF(detector)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_weakref); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_proxy); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF((PyObject *)__pyx_v_detector->model);
  __Pyx_DECREF((PyObject *)__pyx_v_detector->model);
  __pyx_v_detector->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pygcgopt/gcg.pyx":383
 * 
 *         detector.model = <Model>weakref.proxy(self)
 *         detector.detectorname = detectorname             # <<<<<<<<<<<<<<
 *         Py_INCREF(detector)
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_detectorname))||((__pyx_v_detectorname) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_detectorname))) __PYX_ERR(4, 383, __pyx_L1_error)
  __pyx_t_5 = __pyx_v_detectorname;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_detector->detectorname);
  __Pyx_DECREF(__pyx_v_detector->detectorname);
  __pyx_v_detector->detectorname = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pygcgopt/gcg.pyx":384
 *         detector.model = <Model>weakref.proxy(self)
 *         detector.detectorname = detectorname
 *         Py_INCREF(detector)             # <<<<<<<<<<<<<<
 * 
 *     def includeScore(self, Score score, scorename, shortname, desc):
 */
  Py_INCREF(((PyObject *)__pyx_v_detector));

  /* "pygcgopt/gcg.pyx":360
 *         self.setBoolParam("detection/classification/varclassifier/{}/enabled".format(varclassifier_name), is_enabled)
 * 
 *     def includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False):             # <<<<<<<<<<<<<<
 *         """includes a detector
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeDetector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_detectorname);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":386
 *         Py_INCREF(detector)
 * 
 *     def includeScore(self, Score score, scorename, shortname, desc):             # <<<<<<<<<<<<<<
 *         """includes a score
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_59includeScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_58includeScore, "Model.includeScore(self, Score score, scorename, shortname, desc)\nincludes a score\n\n        :param detector: An object of a subclass of detector#Detector.\n        :param detectorname: name of the detector\n\n        For an explanation for all arguments, see :meth:`GCGincludeDetector()`.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_59includeScore = {"includeScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_59includeScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_58includeScore};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_59includeScore(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score = 0;
  PyObject *__pyx_v_scorename = 0;
  PyObject *__pyx_v_shortname = 0;
  PyObject *__pyx_v_desc = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("includeScore (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_score,&__pyx_n_s_scorename,&__pyx_n_s_shortname,&__pyx_n_s_desc,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_score)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 386, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scorename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 386, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeScore", 1, 4, 4, 1); __PYX_ERR(4, 386, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shortname)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 386, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeScore", 1, 4, 4, 2); __PYX_ERR(4, 386, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_desc)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 386, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("includeScore", 1, 4, 4, 3); __PYX_ERR(4, 386, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "includeScore") < 0)) __PYX_ERR(4, 386, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_score = ((struct __pyx_obj_8pygcgopt_3gcg_Score *)values[0]);
    __pyx_v_scorename = values[1];
    __pyx_v_shortname = values[2];
    __pyx_v_desc = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("includeScore", 1, 4, 4, __pyx_nargs); __PYX_ERR(4, 386, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeScore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_score), __pyx_ptype_8pygcgopt_3gcg_Score, 1, "score", 0))) __PYX_ERR(4, 386, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_58includeScore(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_score, __pyx_v_scorename, __pyx_v_shortname, __pyx_v_desc);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_58includeScore(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_Score *__pyx_v_score, PyObject *__pyx_v_scorename, PyObject *__pyx_v_shortname, PyObject *__pyx_v_desc) {
  PyObject *__pyx_v_c_scorename = NULL;
  PyObject *__pyx_v_c_shortname = NULL;
  PyObject *__pyx_v_c_desc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("includeScore", 1);

  /* "pygcgopt/gcg.pyx":394
 *         For an explanation for all arguments, see :meth:`GCGincludeDetector()`.
 *         """
 *         c_scorename = str_conversion(scorename)             # <<<<<<<<<<<<<<
 *         c_shortname = str_conversion(shortname)
 *         c_desc = str_conversion(desc)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_scorename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_scorename = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":395
 *         """
 *         c_scorename = str_conversion(scorename)
 *         c_shortname = str_conversion(shortname)             # <<<<<<<<<<<<<<
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeScore(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_shortname};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_shortname = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":396
 *         c_scorename = str_conversion(scorename)
 *         c_shortname = str_conversion(shortname)
 *         c_desc = str_conversion(desc)             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGincludeScore(
 *             self._scip, c_scorename, c_shortname, c_desc,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_desc};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_desc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":397
 *         c_shortname = str_conversion(shortname)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeScore(             # <<<<<<<<<<<<<<
 *             self._scip, c_scorename, c_shortname, c_desc,
 *             <GCG_SCOREDATA*>score, PyScoreFree, PyScoreCalculate))
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pygcgopt/gcg.pyx":398
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeScore(
 *             self._scip, c_scorename, c_shortname, c_desc,             # <<<<<<<<<<<<<<
 *             <GCG_SCOREDATA*>score, PyScoreFree, PyScoreCalculate))
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_c_scorename); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 398, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_c_shortname); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 398, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_c_desc); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(4, 398, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":397
 *         c_shortname = str_conversion(shortname)
 *         c_desc = str_conversion(desc)
 *         PY_SCIP_CALL(GCGincludeScore(             # <<<<<<<<<<<<<<
 *             self._scip, c_scorename, c_shortname, c_desc,
 *             <GCG_SCOREDATA*>score, PyScoreFree, PyScoreCalculate))
 */
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGincludeScore(__pyx_v_self->__pyx_base._scip, __pyx_t_5, __pyx_t_6, __pyx_t_7, ((GCG_SCOREDATA *)__pyx_v_score), __pyx_f_8pygcgopt_3gcg_PyScoreFree, __pyx_f_8pygcgopt_3gcg_PyScoreCalculate)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":401
 *             <GCG_SCOREDATA*>score, PyScoreFree, PyScoreCalculate))
 * 
 *         score.model = <Model>weakref.proxy(self)             # <<<<<<<<<<<<<<
 *         score.scorename = scorename
 *         Py_INCREF(score)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_proxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF((PyObject *)__pyx_v_score->model);
  __Pyx_DECREF((PyObject *)__pyx_v_score->model);
  __pyx_v_score->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":402
 * 
 *         score.model = <Model>weakref.proxy(self)
 *         score.scorename = scorename             # <<<<<<<<<<<<<<
 *         Py_INCREF(score)
 * 
 */
  if (!(likely(PyUnicode_CheckExact(__pyx_v_scorename))||((__pyx_v_scorename) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_v_scorename))) __PYX_ERR(4, 402, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_scorename;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_score->scorename);
  __Pyx_DECREF(__pyx_v_score->scorename);
  __pyx_v_score->scorename = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":403
 *         score.model = <Model>weakref.proxy(self)
 *         score.scorename = scorename
 *         Py_INCREF(score)             # <<<<<<<<<<<<<<
 * 
 *     def listDetectors(self):
 */
  Py_INCREF(((PyObject *)__pyx_v_score));

  /* "pygcgopt/gcg.pyx":386
 *         Py_INCREF(detector)
 * 
 *     def includeScore(self, Score score, scorename, shortname, desc):             # <<<<<<<<<<<<<<
 *         """includes a score
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.includeScore", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_scorename);
  __Pyx_XDECREF(__pyx_v_c_shortname);
  __Pyx_XDECREF(__pyx_v_c_desc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":405
 *         Py_INCREF(score)
 * 
 *     def listDetectors(self):             # <<<<<<<<<<<<<<
 *         """Lists all detectors that are currently included
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_61listDetectors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_60listDetectors, "Model.listDetectors(self)\nLists all detectors that are currently included\n\n        :return: A list of strings of the detector names\n\n        .. note:: The detectors can be enabled or disabled using the appropriate methods by passing the name.\n\n        .. seealso:: * :meth:`setDetectorEnabled`\n                     * :meth:`setDetectorFinishingEnabled`\n                     * :meth:`setDetectorPostprocessingEnabled`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_61listDetectors = {"listDetectors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_61listDetectors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_60listDetectors};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_61listDetectors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listDetectors (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listDetectors", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listDetectors", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_60listDetectors(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_60listDetectors(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_detectors;
  GCG_DETECTOR **__pyx_v_detectors;
  int __pyx_9genexpr23__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("listDetectors", 1);

  /* "pygcgopt/gcg.pyx":416
 *                      * :meth:`setDetectorPostprocessingEnabled`
 *         """
 *         cdef int n_detectors = GCGconshdlrDecompGetNDetectors(self._scip)             # <<<<<<<<<<<<<<
 *         cdef GCG_DETECTOR** detectors = GCGconshdlrDecompGetDetectors(self._scip)
 * 
 */
  __pyx_v_n_detectors = GCGconshdlrDecompGetNDetectors(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":417
 *         """
 *         cdef int n_detectors = GCGconshdlrDecompGetNDetectors(self._scip)
 *         cdef GCG_DETECTOR** detectors = GCGconshdlrDecompGetDetectors(self._scip)             # <<<<<<<<<<<<<<
 * 
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]
 */
  __pyx_v_detectors = GCGconshdlrDecompGetDetectors(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":419
 *         cdef GCG_DETECTOR** detectors = GCGconshdlrDecompGetDetectors(self._scip)
 * 
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]             # <<<<<<<<<<<<<<
 * 
 *     def listScores(self):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_detectors;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr23__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = GCGdetectorGetName((__pyx_v_detectors[__pyx_9genexpr23__pyx_v_i]));
      __pyx_t_6 = __Pyx_ssize_strlen(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(4, 419, __pyx_L1_error)
      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_5, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 419, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(4, 419, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":405
 *         Py_INCREF(score)
 * 
 *     def listDetectors(self):             # <<<<<<<<<<<<<<
 *         """Lists all detectors that are currently included
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listDetectors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":421
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]
 * 
 *     def listScores(self):             # <<<<<<<<<<<<<<
 *         """Lists all scores that are currently included
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_63listScores(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_62listScores, "Model.listScores(self)\nLists all scores that are currently included\n\n        :return: A list of strings of the score names\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_63listScores = {"listScores", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_63listScores, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_62listScores};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_63listScores(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("listScores (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("listScores", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "listScores", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_62listScores(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_62listScores(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  int __pyx_v_n_scores;
  GCG_SCORE **__pyx_v_scores;
  int __pyx_9genexpr24__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("listScores", 1);

  /* "pygcgopt/gcg.pyx":426
 *         :return: A list of strings of the score names
 *         """
 *         cdef int n_scores = GCGgetNScores(self._scip)             # <<<<<<<<<<<<<<
 *         cdef GCG_SCORE** scores = GCGgetScores(self._scip)
 * 
 */
  __pyx_v_n_scores = GCGgetNScores(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":427
 *         """
 *         cdef int n_scores = GCGgetNScores(self._scip)
 *         cdef GCG_SCORE** scores = GCGgetScores(self._scip)             # <<<<<<<<<<<<<<
 * 
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]
 */
  __pyx_v_scores = GCGgetScores(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":429
 *         cdef GCG_SCORE** scores = GCGgetScores(self._scip)
 * 
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorEnabled(self, detector_name, is_enabled=True):
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_scores;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr24__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = GCGscoreGetName((__pyx_v_scores[__pyx_9genexpr24__pyx_v_i]));
      __pyx_t_6 = __Pyx_ssize_strlen(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(4, 429, __pyx_L1_error)
      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_5, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(4, 429, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":421
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]
 * 
 *     def listScores(self):             # <<<<<<<<<<<<<<
 *         """Lists all scores that are currently included
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.listScores", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":431
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]
 * 
 *     def setDetectorEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for detecting partial decompositions.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_65setDetectorEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_64setDetectorEnabled, "Model.setDetectorEnabled(self, detector_name, is_enabled=True)\nEnables or disables a detector for detecting partial decompositions.\n\n        :param detector_name: The name of the detector.\n        :param is_enabled: Decides weather the detector should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"detection/detectors/<name>/enabled\".\n\n        .. note:: Disabling a detector using this method is not enough to ensure that it will not run. In addition setDetectorFinishingEnabled() and setDetectorPostProcessingEnabled() have to be used.\n\n        Use listDetectors() to obtain a list of all detectors.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_65setDetectorEnabled = {"setDetectorEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_65setDetectorEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_64setDetectorEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_65setDetectorEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_detector_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 431, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 431, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorEnabled") < 0)) __PYX_ERR(4, 431, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_detector_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 431, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_64setDetectorEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_detector_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_64setDetectorEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorEnabled", 1);

  /* "pygcgopt/gcg.pyx":444
 *         """
 *         # TODO test if detector_name exists
 *         self.setBoolParam("detection/detectors/{}/enabled".format(detector_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorFinishingEnabled(self, detector_name, is_enabled=True):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_detection_detectors_enabled, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_detector_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":431
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]
 * 
 *     def setDetectorEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for detecting partial decompositions.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":446
 *         self.setBoolParam("detection/detectors/{}/enabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorFinishingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for finishing partial decompositions.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled, "Model.setDetectorFinishingEnabled(self, detector_name, is_enabled=True)\nEnables or disables a detector for finishing partial decompositions.\n\n        :param detector_name: The name of the detector.\n        :param is_enabled: Decides weather the detector should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"detection/detectors/<name>/finishingenabled\".\n\n        .. seealso:: * :meth:`setDetectorEnabled`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled = {"setDetectorFinishingEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_detector_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorFinishingEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 446, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 446, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorFinishingEnabled") < 0)) __PYX_ERR(4, 446, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_detector_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorFinishingEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 446, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorFinishingEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_detector_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorFinishingEnabled", 1);

  /* "pygcgopt/gcg.pyx":457
 *         """
 *         # TODO test if detector_name exists
 *         self.setBoolParam("detection/detectors/{}/finishingenabled".format(detector_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_detection_detectors_finishingena, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_detector_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":446
 *         self.setBoolParam("detection/detectors/{}/enabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorFinishingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for finishing partial decompositions.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorFinishingEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":459
 *         self.setBoolParam("detection/detectors/{}/finishingenabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for postprocessing partial decompositions.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled, "Model.setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True)\nEnables or disables a detector for postprocessing partial decompositions.\n\n        :param detector_name: The name of the detector.\n        :param is_enabled: Decides weather the detector should be enabled or diabled.\n\n        This is a convenience method to access the boolean parameter \"detection/detectors/<name>/postprocessingenabled\".\n\n        .. seealso:: * :meth:`setDetectorEnabled`\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled = {"setDetectorPostprocessingEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_detector_name = 0;
  PyObject *__pyx_v_is_enabled = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDetectorPostprocessingEnabled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_detector_name,&__pyx_n_s_is_enabled,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_detector_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 459, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_is_enabled);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 459, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setDetectorPostprocessingEnabled") < 0)) __PYX_ERR(4, 459, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_detector_name = values[0];
    __pyx_v_is_enabled = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDetectorPostprocessingEnabled", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 459, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorPostprocessingEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_detector_name, __pyx_v_is_enabled);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_detector_name, PyObject *__pyx_v_is_enabled) {
  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;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDetectorPostprocessingEnabled", 1);

  /* "pygcgopt/gcg.pyx":470
 *         """
 *         # TODO test if detector_name exists
 *         self.setBoolParam("detection/detectors/{}/postprocessingenabled".format(detector_name), is_enabled)             # <<<<<<<<<<<<<<
 * 
 *     def getMasterProb(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setBoolParam); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_detection_detectors_postprocessi, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_detector_name};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_is_enabled};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __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(4, 470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":459
 *         self.setBoolParam("detection/detectors/{}/finishingenabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for postprocessing partial decompositions.
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setDetectorPostprocessingEnabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":472
 *         self.setBoolParam("detection/detectors/{}/postprocessingenabled".format(detector_name), is_enabled)
 * 
 *     def getMasterProb(self):             # <<<<<<<<<<<<<<
 *         """Provides access to the GCG master problem.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_71getMasterProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_70getMasterProb, "Model.getMasterProb(self)\nProvides access to the GCG master problem.\n\n        :return: An instance of scip#Model that represents the master problem.\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_71getMasterProb = {"getMasterProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_71getMasterProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_70getMasterProb};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_71getMasterProb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMasterProb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("getMasterProb", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "getMasterProb", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_70getMasterProb(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_70getMasterProb(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  SCIP *__pyx_v_master_prob;
  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("getMasterProb", 1);

  /* "pygcgopt/gcg.pyx":477
 *         :return: An instance of scip#Model that represents the master problem.
 *         """
 *         cdef SCIP * master_prob = GCGgetMasterprob(self._scip)             # <<<<<<<<<<<<<<
 *         return GCGMasterModel.create(master_prob)
 * 
 */
  __pyx_v_master_prob = GCGgetMasterprob(__pyx_v_self->__pyx_base._scip);

  /* "pygcgopt/gcg.pyx":478
 *         """
 *         cdef SCIP * master_prob = GCGgetMasterprob(self._scip)
 *         return GCGMasterModel.create(master_prob)             # <<<<<<<<<<<<<<
 * 
 *     def setGCGSeparating(self, setting):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8pygcgopt_3gcg_14GCGMasterModel_create(__pyx_v_master_prob); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":472
 *         self.setBoolParam("detection/detectors/{}/postprocessingenabled".format(detector_name), is_enabled)
 * 
 *     def getMasterProb(self):             # <<<<<<<<<<<<<<
 *         """Provides access to the GCG master problem.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getMasterProb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":480
 *         return GCGMasterModel.create(master_prob)
 * 
 *     def setGCGSeparating(self, setting):             # <<<<<<<<<<<<<<
 *         """Sets parameter settings of all separators
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_73setGCGSeparating(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_72setGCGSeparating, "Model.setGCGSeparating(self, setting)\nSets parameter settings of all separators\n\n        :param setting: the parameter settings (SCIP_PARAMSETTING)\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_73setGCGSeparating = {"setGCGSeparating", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_73setGCGSeparating, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_72setGCGSeparating};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_73setGCGSeparating(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_setting = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setGCGSeparating (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_setting,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_setting)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 480, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setGCGSeparating") < 0)) __PYX_ERR(4, 480, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_setting = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setGCGSeparating", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 480, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setGCGSeparating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_72setGCGSeparating(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_setting);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_72setGCGSeparating(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_setting) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  SCIP_PARAMSETTING __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setGCGSeparating", 1);

  /* "pygcgopt/gcg.pyx":486
 *         """
 *         # GCG API is inconsistant with SCIP, SCIPsetSeparating
 *         PY_SCIP_CALL(GCGsetSeparators(self._scip, setting))             # <<<<<<<<<<<<<<
 * 
 *     def writeAllDecomps(self, directory="alldecompositions/", extension="dec", bool original=True, bool presolved=True, createDirectory=True):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_As_SCIP_PARAMSETTING(__pyx_v_setting); if (unlikely((__pyx_t_3 == ((SCIP_PARAMSETTING)-1)) && PyErr_Occurred())) __PYX_ERR(4, 486, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_From_SCIP_RETCODE(GCGsetSeparators(__pyx_v_self->__pyx_base._scip, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":480
 *         return GCGMasterModel.create(master_prob)
 * 
 *     def setGCGSeparating(self, setting):             # <<<<<<<<<<<<<<
 *         """Sets parameter settings of all separators
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.setGCGSeparating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":488
 *         PY_SCIP_CALL(GCGsetSeparators(self._scip, setting))
 * 
 *     def writeAllDecomps(self, directory="alldecompositions/", extension="dec", bool original=True, bool presolved=True, createDirectory=True):             # <<<<<<<<<<<<<<
 *         """Writes all decompositions to disk
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_75writeAllDecomps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_74writeAllDecomps, "Model.writeAllDecomps(self, directory=u'alldecompositions/', extension=u'dec', bool original=True, bool presolved=True, createDirectory=True)\nWrites all decompositions to disk\n\n        :param directory: A path to a folder where to store the decomposition files\n        :param extension: Extension without a dot. Decides the output format. Use \"dec\" to output decomposition files\n        :param createDirectory: Automatically create the directory specified in ``directory`` if it does not exist\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_75writeAllDecomps = {"writeAllDecomps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_75writeAllDecomps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_74writeAllDecomps};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_75writeAllDecomps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_directory = 0;
  PyObject *__pyx_v_extension = 0;
  bool __pyx_v_original;
  bool __pyx_v_presolved;
  PyObject *__pyx_v_createDirectory = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeAllDecomps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_directory,&__pyx_n_s_extension,&__pyx_n_s_original,&__pyx_n_s_presolved,&__pyx_n_s_createDirectory,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_u_alldecompositions));
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_n_u_dec));
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_directory);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_extension);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_original);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_presolved);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_createDirectory);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "writeAllDecomps") < 0)) __PYX_ERR(4, 488, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_directory = values[0];
    __pyx_v_extension = values[1];
    if (values[2]) {
      __pyx_v_original = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_original == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
    } else {
      __pyx_v_original = ((bool)1);
    }
    if (values[3]) {
      __pyx_v_presolved = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_presolved == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 488, __pyx_L3_error)
    } else {
      __pyx_v_presolved = ((bool)1);
    }
    __pyx_v_createDirectory = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeAllDecomps", 0, 0, 5, __pyx_nargs); __PYX_ERR(4, 488, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.writeAllDecomps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_74writeAllDecomps(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_directory, __pyx_v_extension, __pyx_v_original, __pyx_v_presolved, __pyx_v_createDirectory);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_74writeAllDecomps(struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_directory, PyObject *__pyx_v_extension, bool __pyx_v_original, bool __pyx_v_presolved, PyObject *__pyx_v_createDirectory) {
  PyObject *__pyx_v_c_directory = NULL;
  PyObject *__pyx_v_c_extension = NULL;
  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;
  unsigned int __pyx_t_5;
  char *__pyx_t_6;
  char *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeAllDecomps", 1);

  /* "pygcgopt/gcg.pyx":495
 *         :param createDirectory: Automatically create the directory specified in ``directory`` if it does not exist
 *         """
 *         if createDirectory:             # <<<<<<<<<<<<<<
 *             Path(directory).mkdir(exist_ok=True, parents=True)
 *         c_directory = str_conversion(directory)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_createDirectory); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 495, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "pygcgopt/gcg.pyx":496
 *         """
 *         if createDirectory:
 *             Path(directory).mkdir(exist_ok=True, parents=True)             # <<<<<<<<<<<<<<
 *         c_directory = str_conversion(directory)
 *         c_extension = str_conversion(extension)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (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_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_directory};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_mkdir); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_exist_ok, Py_True) < 0) __PYX_ERR(4, 496, __pyx_L1_error)
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_parents, Py_True) < 0) __PYX_ERR(4, 496, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "pygcgopt/gcg.pyx":495
 *         :param createDirectory: Automatically create the directory specified in ``directory`` if it does not exist
 *         """
 *         if createDirectory:             # <<<<<<<<<<<<<<
 *             Path(directory).mkdir(exist_ok=True, parents=True)
 *         c_directory = str_conversion(directory)
 */
  }

  /* "pygcgopt/gcg.pyx":497
 *         if createDirectory:
 *             Path(directory).mkdir(exist_ok=True, parents=True)
 *         c_directory = str_conversion(directory)             # <<<<<<<<<<<<<<
 *         c_extension = str_conversion(extension)
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_directory};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_directory = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "pygcgopt/gcg.pyx":498
 *             Path(directory).mkdir(exist_ok=True, parents=True)
 *         c_directory = str_conversion(directory)
 *         c_extension = str_conversion(extension)             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_extension};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_c_extension = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "pygcgopt/gcg.pyx":499
 *         c_directory = str_conversion(directory)
 *         c_extension = str_conversion(extension)
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))             # <<<<<<<<<<<<<<
 * 
 *     def getMastervars(self, var):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_c_directory); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 499, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_c_extension); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(4, 499, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGwriteAllDecomps(__pyx_v_self->__pyx_base._scip, __pyx_t_6, __pyx_t_7, __pyx_v_original, __pyx_v_presolved)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_3};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 499, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pygcgopt/gcg.pyx":488
 *         PY_SCIP_CALL(GCGsetSeparators(self._scip, setting))
 * 
 *     def writeAllDecomps(self, directory="alldecompositions/", extension="dec", bool original=True, bool presolved=True, createDirectory=True):             # <<<<<<<<<<<<<<
 *         """Writes all decompositions to disk
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.writeAllDecomps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_c_directory);
  __Pyx_XDECREF(__pyx_v_c_extension);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":501
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 * 
 *     def getMastervars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the master variables corresponding to the variable of original problem
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_77getMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_76getMastervars, "Model.getMastervars(self, var)\nReturns the master variables corresponding to the variable of original problem\n\n        :param var: Variable of original problem\n        :return: List of master variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_77getMastervars = {"getMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_77getMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_76getMastervars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_77getMastervars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getMastervars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 501, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getMastervars") < 0)) __PYX_ERR(4, 501, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getMastervars", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 501, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getMastervars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_76getMastervars(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_76getMastervars(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, PyObject *__pyx_v_var) {
  int __pyx_v_n_vars;
  SCIP_VAR **__pyx_v_mastervars;
  int __pyx_9genexpr25__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  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("getMastervars", 1);

  /* "pygcgopt/gcg.pyx":507
 *         :return: List of master variables
 *         """
 *         cdef int n_vars = GCGoriginalVarGetNMastervars((<Variable>var).scip_var)             # <<<<<<<<<<<<<<
 *         cdef SCIP_VAR** mastervars = GCGoriginalVarGetMastervars((<Variable>var).scip_var)
 *         return [Variable.create(mastervars[i]) for i in range(n_vars)]
 */
  __pyx_v_n_vars = GCGoriginalVarGetNMastervars(((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_v_var)->scip_var);

  /* "pygcgopt/gcg.pyx":508
 *         """
 *         cdef int n_vars = GCGoriginalVarGetNMastervars((<Variable>var).scip_var)
 *         cdef SCIP_VAR** mastervars = GCGoriginalVarGetMastervars((<Variable>var).scip_var)             # <<<<<<<<<<<<<<
 *         return [Variable.create(mastervars[i]) for i in range(n_vars)]
 * 
 */
  __pyx_v_mastervars = GCGoriginalVarGetMastervars(((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_v_var)->scip_var);

  /* "pygcgopt/gcg.pyx":509
 *         cdef int n_vars = GCGoriginalVarGetNMastervars((<Variable>var).scip_var)
 *         cdef SCIP_VAR** mastervars = GCGoriginalVarGetMastervars((<Variable>var).scip_var)
 *         return [Variable.create(mastervars[i]) for i in range(n_vars)]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_vars;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr25__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create((__pyx_v_mastervars[__pyx_9genexpr25__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(4, 509, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":501
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 * 
 *     def getMastervars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the master variables corresponding to the variable of original problem
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.Model.getMastervars", __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):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_79__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_78__reduce_cython__, "Model.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_79__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_79__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_78__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_79__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_78__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_78__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.Model.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_81__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_5Model_80__setstate_cython__, "Model.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5Model_81__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_81__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_80__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5Model_81__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.Model.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_5Model_80__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_5Model_80__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_Model *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.Model.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":514
 * cdef class GCGPricingModel(SCIPModel):
 *     @staticmethod
 *     cdef create(SCIP* scip):             # <<<<<<<<<<<<<<
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create(SCIP *__pyx_v_scip) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_model = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  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("create", 1);

  /* "pygcgopt/gcg.pyx":517
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 *         if scip == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGPricingModel(createscip=False)
 */
  __pyx_t_1 = (__pyx_v_scip == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "pygcgopt/gcg.pyx":518
 *         """
 *         if scip == NULL:
 *             raise Warning("cannot create Model with SCIP* == NULL")             # <<<<<<<<<<<<<<
 *         model = GCGPricingModel(createscip=False)
 *         model._scip = scip
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(4, 518, __pyx_L1_error)

    /* "pygcgopt/gcg.pyx":517
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 *         if scip == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGPricingModel(createscip=False)
 */
  }

  /* "pygcgopt/gcg.pyx":519
 *         if scip == NULL:
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGPricingModel(createscip=False)             # <<<<<<<<<<<<<<
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_createscip, Py_False) < 0) __PYX_ERR(4, 519, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_model = ((struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":520
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGPricingModel(createscip=False)
 *         model._scip = scip             # <<<<<<<<<<<<<<
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 *         return model
 */
  __pyx_v_model->__pyx_base._scip = __pyx_v_scip;

  /* "pygcgopt/gcg.pyx":521
 *         model = GCGPricingModel(createscip=False)
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))             # <<<<<<<<<<<<<<
 *         return model
 * 
 */
  __pyx_t_3 = __pyx_vtabptr_9pyscipopt_4scip_Solution->create(__pyx_v_scip, SCIPgetBestSol(__pyx_v_scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_9pyscipopt_4scip_Solution))))) __PYX_ERR(4, 521, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF((PyObject *)__pyx_v_model->__pyx_base._bestSol);
  __Pyx_DECREF((PyObject *)__pyx_v_model->__pyx_base._bestSol);
  __pyx_v_model->__pyx_base._bestSol = ((struct __pyx_obj_9pyscipopt_4scip_Solution *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":522
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 *         return model             # <<<<<<<<<<<<<<
 * 
 *     def createGcgCol(self, probnr, variables, vals, bool isray, redcost):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_model);
  __pyx_r = ((PyObject *)__pyx_v_model);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":514
 * cdef class GCGPricingModel(SCIPModel):
 *     @staticmethod
 *     cdef create(SCIP* scip):             # <<<<<<<<<<<<<<
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_model);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":524
 *         return model
 * 
 *     def createGcgCol(self, probnr, variables, vals, bool isray, redcost):             # <<<<<<<<<<<<<<
 *         """create a gcg column
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol, "GCGPricingModel.createGcgCol(self, probnr, variables, vals, bool isray, redcost)\ncreate a gcg column\n\n        :param prob: number of corresponding pricing problem\n        :param variables: (sorted) array of variables of corresponding pricing problem\n        :param vals: array of solution values (belonging to vars)\n        :param isray: is the column a ray?\n        :param redcost: last known reduced cost\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol = {"createGcgCol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol};
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_probnr = 0;
  PyObject *__pyx_v_variables = 0;
  PyObject *__pyx_v_vals = 0;
  bool __pyx_v_isray;
  PyObject *__pyx_v_redcost = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("createGcgCol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_probnr,&__pyx_n_s_variables,&__pyx_n_s_vals,&__pyx_n_s_isray,&__pyx_n_s_redcost,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_probnr)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_variables)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createGcgCol", 1, 5, 5, 1); __PYX_ERR(4, 524, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_vals)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createGcgCol", 1, 5, 5, 2); __PYX_ERR(4, 524, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_isray)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createGcgCol", 1, 5, 5, 3); __PYX_ERR(4, 524, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_redcost)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("createGcgCol", 1, 5, 5, 4); __PYX_ERR(4, 524, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "createGcgCol") < 0)) __PYX_ERR(4, 524, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
      values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
    }
    __pyx_v_probnr = values[0];
    __pyx_v_variables = values[1];
    __pyx_v_vals = values[2];
    __pyx_v_isray = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_isray == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(4, 524, __pyx_L3_error)
    __pyx_v_redcost = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createGcgCol", 1, 5, 5, __pyx_nargs); __PYX_ERR(4, 524, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.createGcgCol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol(((struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *)__pyx_v_self), __pyx_v_probnr, __pyx_v_variables, __pyx_v_vals, __pyx_v_isray, __pyx_v_redcost);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol(struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self, PyObject *__pyx_v_probnr, PyObject *__pyx_v_variables, PyObject *__pyx_v_vals, bool __pyx_v_isray, PyObject *__pyx_v_redcost) {
  GCG_COL *__pyx_v_gcg_col;
  PyObject *__pyx_v_nvars = NULL;
  SCIP_VAR **__pyx_v_c_vars;
  SCIP_Real *__pyx_v_c_vals;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_pyGCGCol = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  SCIP_VAR *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  SCIP_Real __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createGcgCol", 1);

  /* "pygcgopt/gcg.pyx":534
 *         """
 *         cdef GCG_COL * gcg_col
 *         nvars = len(variables)             # <<<<<<<<<<<<<<
 *         cdef SCIP_VAR ** c_vars = <SCIP_VAR**>malloc(nvars * sizeof(SCIP_VAR*))
 *         cdef SCIP_Real * c_vals = <SCIP_Real*>malloc(nvars * sizeof(SCIP_Real))
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_variables); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(4, 534, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_nvars = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":535
 *         cdef GCG_COL * gcg_col
 *         nvars = len(variables)
 *         cdef SCIP_VAR ** c_vars = <SCIP_VAR**>malloc(nvars * sizeof(SCIP_VAR*))             # <<<<<<<<<<<<<<
 *         cdef SCIP_Real * c_vals = <SCIP_Real*>malloc(nvars * sizeof(SCIP_Real))
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_FromSize_t((sizeof(SCIP_VAR *))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_v_nvars, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 535, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_c_vars = ((SCIP_VAR **)malloc(__pyx_t_4));

  /* "pygcgopt/gcg.pyx":536
 *         nvars = len(variables)
 *         cdef SCIP_VAR ** c_vars = <SCIP_VAR**>malloc(nvars * sizeof(SCIP_VAR*))
 *         cdef SCIP_Real * c_vals = <SCIP_Real*>malloc(nvars * sizeof(SCIP_Real))             # <<<<<<<<<<<<<<
 * 
 *         for i in range(nvars):
 */
  __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(SCIP_Real))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyNumber_Multiply(__pyx_v_nvars, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_c_vals = ((SCIP_Real *)malloc(__pyx_t_4));

  /* "pygcgopt/gcg.pyx":538
 *         cdef SCIP_Real * c_vals = <SCIP_Real*>malloc(nvars * sizeof(SCIP_Real))
 * 
 *         for i in range(nvars):             # <<<<<<<<<<<<<<
 *             c_vars[i] = (<Variable>variables[i]).scip_var
 *             c_vals[i] = vals[i]
 */
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 538, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 538, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(4, 538, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_MACROS
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 538, __pyx_L1_error)
          #endif
          if (__pyx_t_1 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_2); __pyx_t_1++; if (unlikely((0 < 0))) __PYX_ERR(4, 538, __pyx_L1_error)
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_5(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 538, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "pygcgopt/gcg.pyx":539
 * 
 *         for i in range(nvars):
 *             c_vars[i] = (<Variable>variables[i]).scip_var             # <<<<<<<<<<<<<<
 *             c_vals[i] = vals[i]
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_variables, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = ((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_t_2)->scip_var;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 539, __pyx_L1_error)
    (__pyx_v_c_vars[__pyx_t_7]) = __pyx_t_6;

    /* "pygcgopt/gcg.pyx":540
 *         for i in range(nvars):
 *             c_vars[i] = (<Variable>variables[i]).scip_var
 *             c_vals[i] = vals[i]             # <<<<<<<<<<<<<<
 * 
 *         GCGcreateGcgCol(self._scip, &gcg_col, probnr, c_vars, c_vals, nvars, isray, redcost)
 */
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_vals, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_8 == ((SCIP_Real)-1)) && PyErr_Occurred())) __PYX_ERR(4, 540, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 540, __pyx_L1_error)
    (__pyx_v_c_vals[__pyx_t_7]) = __pyx_t_8;

    /* "pygcgopt/gcg.pyx":538
 *         cdef SCIP_Real * c_vals = <SCIP_Real*>malloc(nvars * sizeof(SCIP_Real))
 * 
 *         for i in range(nvars):             # <<<<<<<<<<<<<<
 *             c_vars[i] = (<Variable>variables[i]).scip_var
 *             c_vals[i] = vals[i]
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":542
 *             c_vals[i] = vals[i]
 * 
 *         GCGcreateGcgCol(self._scip, &gcg_col, probnr, c_vars, c_vals, nvars, isray, redcost)             # <<<<<<<<<<<<<<
 * 
 *         pyGCGCol = GCGColumn.create(gcg_col)
 */
  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_probnr); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 542, __pyx_L1_error)
  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nvars); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 542, __pyx_L1_error)
  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_redcost); if (unlikely((__pyx_t_8 == ((SCIP_Real)-1)) && PyErr_Occurred())) __PYX_ERR(4, 542, __pyx_L1_error)
  (void)(GCGcreateGcgCol(__pyx_v_self->__pyx_base._scip, (&__pyx_v_gcg_col), __pyx_t_9, __pyx_v_c_vars, __pyx_v_c_vals, __pyx_t_10, __pyx_v_isray, __pyx_t_8));

  /* "pygcgopt/gcg.pyx":544
 *         GCGcreateGcgCol(self._scip, &gcg_col, probnr, c_vars, c_vals, nvars, isray, redcost)
 * 
 *         pyGCGCol = GCGColumn.create(gcg_col)             # <<<<<<<<<<<<<<
 * 
 *         free(c_vars)
 */
  __pyx_t_3 = __pyx_f_8pygcgopt_3gcg_9GCGColumn_create(__pyx_v_gcg_col); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_pyGCGCol = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":546
 *         pyGCGCol = GCGColumn.create(gcg_col)
 * 
 *         free(c_vars)             # <<<<<<<<<<<<<<
 *         free(c_vals)
 * 
 */
  free(__pyx_v_c_vars);

  /* "pygcgopt/gcg.pyx":547
 * 
 *         free(c_vars)
 *         free(c_vals)             # <<<<<<<<<<<<<<
 * 
 *         return pyGCGCol
 */
  free(__pyx_v_c_vals);

  /* "pygcgopt/gcg.pyx":549
 *         free(c_vals)
 * 
 *         return pyGCGCol             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_pyGCGCol);
  __pyx_r = __pyx_v_pyGCGCol;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":524
 *         return model
 * 
 *     def createGcgCol(self, probnr, variables, vals, bool isray, redcost):             # <<<<<<<<<<<<<<
 *         """create a gcg column
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.createGcgCol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_nvars);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_pyGCGCol);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__, "GCGPricingModel.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__, "GCGPricingModel.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGPricingModel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":554
 * cdef class GCGMasterModel(SCIPModel):
 *     @staticmethod
 *     cdef create(SCIP* scip):             # <<<<<<<<<<<<<<
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_14GCGMasterModel_create(SCIP *__pyx_v_scip) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_model = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  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("create", 1);

  /* "pygcgopt/gcg.pyx":557
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 *         if scip == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGMasterModel(createscip=False)
 */
  __pyx_t_1 = (__pyx_v_scip == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "pygcgopt/gcg.pyx":558
 *         """
 *         if scip == NULL:
 *             raise Warning("cannot create Model with SCIP* == NULL")             # <<<<<<<<<<<<<<
 *         model = GCGMasterModel(createscip=False)
 *         model._scip = scip
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(4, 558, __pyx_L1_error)

    /* "pygcgopt/gcg.pyx":557
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 *         if scip == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGMasterModel(createscip=False)
 */
  }

  /* "pygcgopt/gcg.pyx":559
 *         if scip == NULL:
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGMasterModel(createscip=False)             # <<<<<<<<<<<<<<
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_createscip, Py_False) < 0) __PYX_ERR(4, 559, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_model = ((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":560
 *             raise Warning("cannot create Model with SCIP* == NULL")
 *         model = GCGMasterModel(createscip=False)
 *         model._scip = scip             # <<<<<<<<<<<<<<
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 *         return model
 */
  __pyx_v_model->__pyx_base._scip = __pyx_v_scip;

  /* "pygcgopt/gcg.pyx":561
 *         model = GCGMasterModel(createscip=False)
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))             # <<<<<<<<<<<<<<
 *         return model
 * 
 */
  __pyx_t_3 = __pyx_vtabptr_9pyscipopt_4scip_Solution->create(__pyx_v_scip, SCIPgetBestSol(__pyx_v_scip)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_9pyscipopt_4scip_Solution))))) __PYX_ERR(4, 561, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF((PyObject *)__pyx_v_model->__pyx_base._bestSol);
  __Pyx_DECREF((PyObject *)__pyx_v_model->__pyx_base._bestSol);
  __pyx_v_model->__pyx_base._bestSol = ((struct __pyx_obj_9pyscipopt_4scip_Solution *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":562
 *         model._scip = scip
 *         model._bestSol = Solution.create(scip, SCIPgetBestSol(scip))
 *         return model             # <<<<<<<<<<<<<<
 * 
 *     def addCol(self, GCGColumn col):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_model);
  __pyx_r = ((PyObject *)__pyx_v_model);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":554
 * cdef class GCGMasterModel(SCIPModel):
 *     @staticmethod
 *     cdef create(SCIP* scip):             # <<<<<<<<<<<<<<
 *         """Creates a pricing problem model and appropriately assigns the scip and bestsol parameters
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_model);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":564
 *         return model
 * 
 *     def addCol(self, GCGColumn col):             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_1addCol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_addCol, "GCGMasterModel.addCol(self, GCGColumn col)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_1addCol = {"addCol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_1addCol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_addCol};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_1addCol(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_col = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addCol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_col)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 564, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addCol") < 0)) __PYX_ERR(4, 564, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_col = ((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addCol", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.addCol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_col), __pyx_ptype_8pygcgopt_3gcg_GCGColumn, 1, "col", 0))) __PYX_ERR(4, 564, __pyx_L1_error)
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_addCol(((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)__pyx_v_self), __pyx_v_col);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_addCol(struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_col) {
  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;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addCol", 1);

  /* "pygcgopt/gcg.pyx":565
 * 
 *     def addCol(self, GCGColumn col):
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))             # <<<<<<<<<<<<<<
 * 
 *     def getOrigvars(self, var):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_SCIP_RETCODE(GCGpricerAddCol(__pyx_v_self->__pyx_base._scip, __pyx_v_col->gcg_col)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __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(4, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pygcgopt/gcg.pyx":564
 *         return model
 * 
 *     def addCol(self, GCGColumn col):             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 */

  /* 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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.addCol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":567
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 *     def getOrigvars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the original variables corresponding to the variable of master problem
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars, "GCGMasterModel.getOrigvars(self, var)\nReturns the original variables corresponding to the variable of master problem\n\n        :param var: Variable of master problem\n        :return: List of original variables\n        ");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars = {"getOrigvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_var = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getOrigvars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_var)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 567, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "getOrigvars") < 0)) __PYX_ERR(4, 567, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_var = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getOrigvars", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 567, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.getOrigvars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars(((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)__pyx_v_self), __pyx_v_var);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, PyObject *__pyx_v_var) {
  int __pyx_v_n_vars;
  SCIP_VAR **__pyx_v_originalvars;
  int __pyx_9genexpr26__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  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("getOrigvars", 1);

  /* "pygcgopt/gcg.pyx":573
 *         :return: List of original variables
 *         """
 *         cdef int n_vars = GCGmasterVarGetNOrigvars((<Variable>var).scip_var)             # <<<<<<<<<<<<<<
 *         cdef SCIP_VAR** originalvars = GCGmasterVarGetOrigvars((<Variable>var).scip_var)
 *         return [Variable.create(originalvars[i]) for i in range(n_vars)]
 */
  __pyx_v_n_vars = GCGmasterVarGetNOrigvars(((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_v_var)->scip_var);

  /* "pygcgopt/gcg.pyx":574
 *         """
 *         cdef int n_vars = GCGmasterVarGetNOrigvars((<Variable>var).scip_var)
 *         cdef SCIP_VAR** originalvars = GCGmasterVarGetOrigvars((<Variable>var).scip_var)             # <<<<<<<<<<<<<<
 *         return [Variable.create(originalvars[i]) for i in range(n_vars)]
 * 
 */
  __pyx_v_originalvars = GCGmasterVarGetOrigvars(((struct __pyx_obj_9pyscipopt_4scip_Variable *)__pyx_v_var)->scip_var);

  /* "pygcgopt/gcg.pyx":575
 *         cdef int n_vars = GCGmasterVarGetNOrigvars((<Variable>var).scip_var)
 *         cdef SCIP_VAR** originalvars = GCGmasterVarGetOrigvars((<Variable>var).scip_var)
 *         return [Variable.create(originalvars[i]) for i in range(n_vars)]             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_n_vars;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr26__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __pyx_vtabptr_9pyscipopt_4scip_Variable->create((__pyx_v_originalvars[__pyx_9genexpr26__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(4, 575, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":567
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 *     def getOrigvars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the original variables corresponding to the variable of master problem
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.getOrigvars", __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):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__, "GCGMasterModel.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__, "GCGMasterModel.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__scip_self__valid_cannot_be, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGMasterModel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":582
 * 
 *     @staticmethod
 *     cdef create(GCG_COL* gcgcol):             # <<<<<<<<<<<<<<
 *         if gcgcol == NULL:
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 */

static PyObject *__pyx_f_8pygcgopt_3gcg_9GCGColumn_create(GCG_COL *__pyx_v_gcgcol) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_col = NULL;
  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("create", 1);

  /* "pygcgopt/gcg.pyx":583
 *     @staticmethod
 *     cdef create(GCG_COL* gcgcol):
 *         if gcgcol == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 *         col = GCGColumn()
 */
  __pyx_t_1 = (__pyx_v_gcgcol == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "pygcgopt/gcg.pyx":584
 *     cdef create(GCG_COL* gcgcol):
 *         if gcgcol == NULL:
 *             raise Warning("cannot create Column with GCG_COL* == NULL")             # <<<<<<<<<<<<<<
 *         col = GCGColumn()
 *         col.gcg_col = gcgcol
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Warning, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(4, 584, __pyx_L1_error)

    /* "pygcgopt/gcg.pyx":583
 *     @staticmethod
 *     cdef create(GCG_COL* gcgcol):
 *         if gcgcol == NULL:             # <<<<<<<<<<<<<<
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 *         col = GCGColumn()
 */
  }

  /* "pygcgopt/gcg.pyx":585
 *         if gcgcol == NULL:
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 *         col = GCGColumn()             # <<<<<<<<<<<<<<
 *         col.gcg_col = gcgcol
 *         return col
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGColumn)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_col = ((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":586
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 *         col = GCGColumn()
 *         col.gcg_col = gcgcol             # <<<<<<<<<<<<<<
 *         return col
 * 
 */
  __pyx_v_col->gcg_col = __pyx_v_gcgcol;

  /* "pygcgopt/gcg.pyx":587
 *         col = GCGColumn()
 *         col.gcg_col = gcgcol
 *         return col             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_col);
  __pyx_r = ((PyObject *)__pyx_v_col);
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":582
 * 
 *     @staticmethod
 *     cdef create(GCG_COL* gcgcol):             # <<<<<<<<<<<<<<
 *         if gcgcol == NULL:
 *             raise Warning("cannot create Column with GCG_COL* == NULL")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGColumn.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":589
 *         return col
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash(<size_t>self.gcg_col)
 * 
 */

/* Python wrapper */
static Py_hash_t __pyx_pw_8pygcgopt_3gcg_9GCGColumn_1__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_8pygcgopt_3gcg_9GCGColumn_1__hash__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_9GCGColumn___hash__(((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_v_self));

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

static Py_hash_t __pyx_pf_8pygcgopt_3gcg_9GCGColumn___hash__(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self) {
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_hash_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__hash__", 1);

  /* "pygcgopt/gcg.pyx":590
 * 
 *     def __hash__(self):
 *         return hash(<size_t>self.gcg_col)             # <<<<<<<<<<<<<<
 * 
 *     def __eq__(self, other):
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((size_t)__pyx_v_self->gcg_col)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(4, 590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":589
 *         return col
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash(<size_t>self.gcg_col)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pygcgopt.gcg.GCGColumn.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pygcgopt/gcg.pyx":592
 *         return hash(<size_t>self.gcg_col)
 * 
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         return (self.__class__ == other.__class__ and self.gcg_col == (<GCGColumn>other).gcg_col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_3__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_3__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_9GCGColumn_2__eq__(((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_v_self), ((PyObject *)__pyx_v_other));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_2__eq__(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self, PyObject *__pyx_v_other) {
  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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__eq__", 1);

  /* "pygcgopt/gcg.pyx":593
 * 
 *     def __eq__(self, other):
 *         return (self.__class__ == other.__class__ and self.gcg_col == (<GCGColumn>other).gcg_col)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 593, __pyx_L1_error)
  if (__pyx_t_5) {
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_1 = __pyx_t_4;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_self->gcg_col == ((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_v_other)->gcg_col);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pygcgopt/gcg.pyx":592
 *         return hash(<size_t>self.gcg_col)
 * 
 *     def __eq__(self, other):             # <<<<<<<<<<<<<<
 *         return (self.__class__ == other.__class__ and self.gcg_col == (<GCGColumn>other).gcg_col)
 */

  /* 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("pygcgopt.gcg.GCGColumn.__eq__", __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):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__, "GCGColumn.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_v_self));

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

static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 1);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_gcg_col_cannot_be_converted, 0, 0);
  __PYX_ERR(5, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGColumn.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__, "GCGColumn.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__};
static PyObject *__pyx_pw_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(5, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.GCGColumn.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__(((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 1);

  /* "(tree fragment)":4
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_gcg_col_cannot_be_converted, 0, 0);
  __PYX_ERR(5, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pygcgopt.gcg.GCGColumn.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_Detector(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_1__pyx_unpickle_Detector(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg___pyx_unpickle_Detector, "__pyx_unpickle_Detector(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_1__pyx_unpickle_Detector = {"__pyx_unpickle_Detector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_1__pyx_unpickle_Detector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg___pyx_unpickle_Detector};
static PyObject *__pyx_pw_8pygcgopt_3gcg_1__pyx_unpickle_Detector(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Detector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Detector", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Detector", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_Detector") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Detector", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Detector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg___pyx_unpickle_Detector(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg___pyx_unpickle_Detector(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Detector", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xdad04ef, 0x67e9880, 0xf7f977a):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__15, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xdad04ef, 0x67e9880, 0xf7f977a):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 *     __pyx_result = Detector.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0xdad04ef, 0x67e9880, 0xf7f977a):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = Detector.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xdad04ef, 0x67e9880, 0xf7f977a):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 *     __pyx_result = Detector.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 *     __pyx_result = Detector.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = Detector.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_Detector__set_state(((struct __pyx_obj_8pygcgopt_3gcg_Detector *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 *     __pyx_result = Detector.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __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_Detector(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Detector", __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_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_Detector__set_state(struct __pyx_obj_8pygcgopt_3gcg_Detector *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Detector__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_t_1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->detectorname);
  __Pyx_DECREF(__pyx_v___pyx_result->detectorname);
  __pyx_v___pyx_result->detectorname = ((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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->model);
  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->model);
  __pyx_v___pyx_result->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __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(5, 13, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 13, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 > 2);
  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(5, 13, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 14, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __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_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Detector__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_PricingSolver(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_3__pyx_unpickle_PricingSolver(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_2__pyx_unpickle_PricingSolver, "__pyx_unpickle_PricingSolver(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_3__pyx_unpickle_PricingSolver = {"__pyx_unpickle_PricingSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_3__pyx_unpickle_PricingSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_2__pyx_unpickle_PricingSolver};
static PyObject *__pyx_pw_8pygcgopt_3gcg_3__pyx_unpickle_PricingSolver(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PricingSolver (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PricingSolver", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PricingSolver", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PricingSolver") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PricingSolver", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PricingSolver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_2__pyx_unpickle_PricingSolver(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_2__pyx_unpickle_PricingSolver(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PricingSolver", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x9896ff5, 0x8734839, 0x7a6ef99):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__16, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x9896ff5, 0x8734839, 0x7a6ef99):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 *     __pyx_result = PricingSolver.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0x9896ff5, 0x8734839, 0x7a6ef99):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = PricingSolver.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x9896ff5, 0x8734839, 0x7a6ef99):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 *     __pyx_result = PricingSolver.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 *     __pyx_result = PricingSolver.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = PricingSolver.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PricingSolver__set_state(((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x9896ff5, 0x8734839, 0x7a6ef99) = (model, solvername))" % __pyx_checksum
 *     __pyx_result = PricingSolver.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __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_PricingSolver(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PricingSolver", __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_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PricingSolver__set_state(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PricingSolver__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->model);
  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->model);
  __pyx_v___pyx_result->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_t_1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->solvername);
  __Pyx_DECREF(__pyx_v___pyx_result->solvername);
  __pyx_v___pyx_result->solvername = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __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(5, 13, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 13, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 > 2);
  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(5, 13, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 14, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __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_PricingSolver__set_state(<PricingSolver> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PricingSolver__set_state(PricingSolver __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.solvername = __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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PricingSolver__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_Score(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_5__pyx_unpickle_Score(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_4__pyx_unpickle_Score, "__pyx_unpickle_Score(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_5__pyx_unpickle_Score = {"__pyx_unpickle_Score", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5__pyx_unpickle_Score, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_4__pyx_unpickle_Score};
static PyObject *__pyx_pw_8pygcgopt_3gcg_5__pyx_unpickle_Score(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_Score (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Score", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Score", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_Score") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Score", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Score", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_4__pyx_unpickle_Score(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_4__pyx_unpickle_Score(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Score", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x636e5c2, 0x16f8d05, 0xb871c0f):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__17, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x636e5c2, 0x16f8d05, 0xb871c0f):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 *     __pyx_result = Score.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0x636e5c2, 0x16f8d05, 0xb871c0f):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = Score.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x636e5c2, 0x16f8d05, 0xb871c0f):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 *     __pyx_result = Score.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Score), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 *     __pyx_result = Score.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = Score.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_Score__set_state(((struct __pyx_obj_8pygcgopt_3gcg_Score *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x636e5c2, 0x16f8d05, 0xb871c0f) = (model, scorename))" % __pyx_checksum
 *     __pyx_result = Score.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __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_Score(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Score", __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_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_Score__set_state(struct __pyx_obj_8pygcgopt_3gcg_Score *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_Score__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->model);
  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->model);
  __pyx_v___pyx_result->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_t_1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->scorename);
  __Pyx_DECREF(__pyx_v___pyx_result->scorename);
  __pyx_v___pyx_result->scorename = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __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(5, 13, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 13, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 > 2);
  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(5, 13, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 14, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __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_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_Score__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_ConsClassifier(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_7__pyx_unpickle_ConsClassifier(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_6__pyx_unpickle_ConsClassifier, "__pyx_unpickle_ConsClassifier(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_7__pyx_unpickle_ConsClassifier = {"__pyx_unpickle_ConsClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7__pyx_unpickle_ConsClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_6__pyx_unpickle_ConsClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_7__pyx_unpickle_ConsClassifier(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConsClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConsClassifier", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConsClassifier", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_ConsClassifier") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ConsClassifier", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_ConsClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_6__pyx_unpickle_ConsClassifier(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_6__pyx_unpickle_ConsClassifier(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConsClassifier", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__18, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsClassifier), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_ConsClassifier__set_state(((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = ConsClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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_ConsClassifier(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_ConsClassifier", __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_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_ConsClassifier__set_state(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ConsClassifier__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->model);
  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->model);
  __pyx_v___pyx_result->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_t_1))) __PYX_ERR(5, 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_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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(5, 13, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 13, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 > 2);
  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(5, 13, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.model = __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_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 14, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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_ConsClassifier__set_state(<ConsClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ConsClassifier__set_state(ConsClassifier __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_ConsClassifier__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_VarClassifier(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_9__pyx_unpickle_VarClassifier(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_8__pyx_unpickle_VarClassifier, "__pyx_unpickle_VarClassifier(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_9__pyx_unpickle_VarClassifier = {"__pyx_unpickle_VarClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_9__pyx_unpickle_VarClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8__pyx_unpickle_VarClassifier};
static PyObject *__pyx_pw_8pygcgopt_3gcg_9__pyx_unpickle_VarClassifier(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_VarClassifier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VarClassifier", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VarClassifier", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_VarClassifier") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_VarClassifier", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_VarClassifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_8__pyx_unpickle_VarClassifier(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_8__pyx_unpickle_VarClassifier(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_VarClassifier", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__18, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = VarClassifier.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = VarClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0x48f811e, 0x23d1325, 0xecd383d):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = VarClassifier.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarClassifier), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = VarClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = VarClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_VarClassifier__set_state(((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x48f811e, 0x23d1325, 0xecd383d) = (model, name))" % __pyx_checksum
 *     __pyx_result = VarClassifier.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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_VarClassifier(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_VarClassifier", __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_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_VarClassifier__set_state(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *__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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_VarClassifier__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_8pygcgopt_3gcg_Model))))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->model);
  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->model);
  __pyx_v___pyx_result->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)__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(5, 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(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("unicode", __pyx_t_1))) __PYX_ERR(5, 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_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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(5, 13, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 13, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 > 2);
  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(5, 13, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "(tree fragment)":14
 *     __pyx_result.model = __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_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 14, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):
 *     __pyx_result.model = __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_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_VarClassifier__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_PY_GCG_PRICINGSTATUS(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_11__pyx_unpickle_PY_GCG_PRICINGSTATUS(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_10__pyx_unpickle_PY_GCG_PRICINGSTATUS, "__pyx_unpickle_PY_GCG_PRICINGSTATUS(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_11__pyx_unpickle_PY_GCG_PRICINGSTATUS = {"__pyx_unpickle_PY_GCG_PRICINGSTATUS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11__pyx_unpickle_PY_GCG_PRICINGSTATUS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_10__pyx_unpickle_PY_GCG_PRICINGSTATUS};
static PyObject *__pyx_pw_8pygcgopt_3gcg_11__pyx_unpickle_PY_GCG_PRICINGSTATUS(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_GCG_PRICINGSTATUS (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_GCG_PRICINGSTATUS", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_GCG_PRICINGSTATUS", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PY_GCG_PRICINGSTATUS") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_GCG_PRICINGSTATUS", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_GCG_PRICINGSTATUS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_10__pyx_unpickle_PY_GCG_PRICINGSTATUS(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_10__pyx_unpickle_PY_GCG_PRICINGSTATUS(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_GCG_PRICINGSTATUS", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__19, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(((struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_GCG_PRICINGSTATUS.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __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_PY_GCG_PRICINGSTATUS(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_GCG_PRICINGSTATUS", __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_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(5, 12, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 13, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(<PY_GCG_PRICINGSTATUS> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(PY_GCG_PRICINGSTATUS __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_GCG_PRICINGSTATUS__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_PY_USERGIVEN(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_13__pyx_unpickle_PY_USERGIVEN(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_12__pyx_unpickle_PY_USERGIVEN, "__pyx_unpickle_PY_USERGIVEN(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_13__pyx_unpickle_PY_USERGIVEN = {"__pyx_unpickle_PY_USERGIVEN", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13__pyx_unpickle_PY_USERGIVEN, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_12__pyx_unpickle_PY_USERGIVEN};
static PyObject *__pyx_pw_8pygcgopt_3gcg_13__pyx_unpickle_PY_USERGIVEN(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_USERGIVEN (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_USERGIVEN", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_USERGIVEN", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PY_USERGIVEN") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_USERGIVEN", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_USERGIVEN", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_12__pyx_unpickle_PY_USERGIVEN(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_12__pyx_unpickle_PY_USERGIVEN(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_USERGIVEN", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__19, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_USERGIVEN__set_state(((struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_USERGIVEN.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __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_PY_USERGIVEN(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_USERGIVEN", __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_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_USERGIVEN__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_USERGIVEN__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(5, 12, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 13, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_USERGIVEN__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_PY_VAR_DECOMPINFO(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_15__pyx_unpickle_PY_VAR_DECOMPINFO(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_14__pyx_unpickle_PY_VAR_DECOMPINFO, "__pyx_unpickle_PY_VAR_DECOMPINFO(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_15__pyx_unpickle_PY_VAR_DECOMPINFO = {"__pyx_unpickle_PY_VAR_DECOMPINFO", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15__pyx_unpickle_PY_VAR_DECOMPINFO, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14__pyx_unpickle_PY_VAR_DECOMPINFO};
static PyObject *__pyx_pw_8pygcgopt_3gcg_15__pyx_unpickle_PY_VAR_DECOMPINFO(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_VAR_DECOMPINFO (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_VAR_DECOMPINFO", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_VAR_DECOMPINFO", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PY_VAR_DECOMPINFO") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_VAR_DECOMPINFO", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_VAR_DECOMPINFO", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_14__pyx_unpickle_PY_VAR_DECOMPINFO(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_14__pyx_unpickle_PY_VAR_DECOMPINFO(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_VAR_DECOMPINFO", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__19, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_VAR_DECOMPINFO__set_state(((struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_VAR_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __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_PY_VAR_DECOMPINFO(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_VAR_DECOMPINFO", __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_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_VAR_DECOMPINFO__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_VAR_DECOMPINFO__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(5, 12, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 13, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(<PY_VAR_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(PY_VAR_DECOMPINFO __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_VAR_DECOMPINFO__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_PY_CONS_DECOMPINFO(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_8pygcgopt_3gcg_17__pyx_unpickle_PY_CONS_DECOMPINFO(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_8pygcgopt_3gcg_16__pyx_unpickle_PY_CONS_DECOMPINFO, "__pyx_unpickle_PY_CONS_DECOMPINFO(__pyx_type, long __pyx_checksum, __pyx_state)");
static PyMethodDef __pyx_mdef_8pygcgopt_3gcg_17__pyx_unpickle_PY_CONS_DECOMPINFO = {"__pyx_unpickle_PY_CONS_DECOMPINFO", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_17__pyx_unpickle_PY_CONS_DECOMPINFO, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_16__pyx_unpickle_PY_CONS_DECOMPINFO};
static PyObject *__pyx_pw_8pygcgopt_3gcg_17__pyx_unpickle_PY_CONS_DECOMPINFO(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_CONS_DECOMPINFO (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_checksum)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_CONS_DECOMPINFO", 1, 3, 3, 1); __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_CONS_DECOMPINFO", 1, 3, 3, 2); __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__pyx_unpickle_PY_CONS_DECOMPINFO") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__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(5, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_PY_CONS_DECOMPINFO", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_CONS_DECOMPINFO", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8pygcgopt_3gcg_16__pyx_unpickle_PY_CONS_DECOMPINFO(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8pygcgopt_3gcg_16__pyx_unpickle_PY_CONS_DECOMPINFO(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
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_CONS_DECOMPINFO", 1);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__19, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)
 */
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PickleError)) __PYX_ERR(5, 5, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v___pyx_PickleError = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum             # <<<<<<<<<<<<<<
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(5, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (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;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v___pyx_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v___pyx_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_2 = (__pyx_v___pyx_state != Py_None);
  if (__pyx_t_2) {

    /* "(tree fragment)":9
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(5, 9, __pyx_L1_error)
    __pyx_t_1 = __pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_CONS_DECOMPINFO__set_state(((struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum
 *     __pyx_result = PY_CONS_DECOMPINFO.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __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_PY_CONS_DECOMPINFO(__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_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_CONS_DECOMPINFO", __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_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_8pygcgopt_3gcg___pyx_unpickle_PY_CONS_DECOMPINFO__set_state(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_PY_CONS_DECOMPINFO__set_state", 1);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(5, 12, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 12, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(5, 13, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(<PY_CONS_DECOMPINFO> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(PY_CONS_DECOMPINFO __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pygcgopt.gcg.__pyx_unpickle_PY_CONS_DECOMPINFO__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_8pygcgopt_3gcg_DetProbData __pyx_vtable_8pygcgopt_3gcg_DetProbData;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_DetProbData(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_DetProbData *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)o);
  p->__pyx_vtab = __pyx_vtabptr_8pygcgopt_3gcg_DetProbData;
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_DetProbData(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_DetProbData) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_DetProbData[] = {
  {"createConsPart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_1createConsPart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_createConsPart},
  {"createVarPart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_3createVarPart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_2createVarPart},
  {"candidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_4candidatesNBlocks},
  {"candidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_6candidatesNBlocks},
  {"conspartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_8conspartitioncollection},
  {"conspartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_10conspartitioncollection},
  {"varpartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_12varpartitioncollection},
  {"varpartitioncollection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_14varpartitioncollection},
  {"classificationtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_17classificationtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_16classificationtime},
  {"classificationtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_19classificationtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_18classificationtime},
  {"nblockscandidatescalctime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_20nblockscandidatescalctime},
  {"nblockscandidatescalctime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_22nblockscandidatescalctime},
  {"postprocessingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_25postprocessingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_24postprocessingtime},
  {"postprocessingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_27postprocessingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_26postprocessingtime},
  {"translatingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_29translatingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_28translatingtime},
  {"translatingtime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_31translatingtime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_30translatingtime},
  {"addConsPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_33addConsPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_32addConsPartition},
  {"addCandidatesNBlocksNVotes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_34addCandidatesNBlocksNVotes},
  {"addPartialdecToAncestor", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_36addPartialdecToAncestor},
  {"addPartialdecToOpen", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_38addPartialdecToOpen},
  {"addPartialdecToFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_40addPartialdecToFinished},
  {"addPartialdecToFinishedUnchecked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_42addPartialdecToFinishedUnchecked},
  {"addVarPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_45addVarPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_44addVarPartition},
  {"clearAncestorPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_46clearAncestorPartialdecs},
  {"clearCurrentPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_48clearCurrentPartialdecs},
  {"clearFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_50clearFinishedPartialdecs},
  {"createConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_52createConssAdjacency},
  {"freeTemporaryData", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_54freeTemporaryData},
  {"getAncestorPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_56getAncestorPartialdec},
  {"getConsPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_59getConsPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_58getConsPartition},
  {"getConsPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_61getConsPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_60getConsPartitions},
  {"getCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_63getCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_62getCons},
  {"getConssForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_65getConssForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_64getConssForCons},
  {"getConssForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_67getConssForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_66getConssForVar},
  {"getOpenPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_68getOpenPartialdecs},
  {"getFinishedPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_70getFinishedPartialdec},
  {"getFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_72getFinishedPartialdecs},
  {"getIndexForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_75getIndexForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_74getIndexForCons},
  {"getIndexForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_77getIndexForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_76getIndexForVar},
  {"getNAncestorPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_78getNAncestorPartialdecs},
  {"getNConsPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_80getNConsPartitions},
  {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_83getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_82getNConss},
  {"getNConssForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_85getNConssForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_84getNConssForCons},
  {"getNConssForVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_87getNConssForVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_86getNConssForVar},
  {"getNOpenPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_88getNOpenPartialdecs},
  {"getNFinishedPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_90getNFinishedPartialdecs},
  {"getNPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_92getNPartialdecs},
  {"getNNonzeros", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_95getNNonzeros, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_94getNNonzeros},
  {"getNVarPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_96getNVarPartitions},
  {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_99getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_98getNVars},
  {"getNVarsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_100getNVarsForCons},
  {"getOrigVarsFixedZero", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_102getOrigVarsFixedZero},
  {"getRelevantConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_105getRelevantConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_104getRelevantConss},
  {"getRelevantVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_107getRelevantVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_106getRelevantVars},
  {"getModel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_109getModel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_108getModel},
  {"getSortedCandidatesNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_110getSortedCandidatesNBlocks},
  {"getVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_113getVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_112getVal},
  {"getValsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_115getValsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_114getValsForCons},
  {"getVarPartition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_117getVarPartition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_116getVarPartition},
  {"getVarPartitions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_119getVarPartitions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_118getVarPartitions},
  {"getVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_121getVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_120getVar},
  {"getVarsForCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_123getVarsForCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_122getVarsForCons},
  {"isConsCardinalityCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_124isConsCardinalityCons},
  {"isConssAdjInitialized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_126isConssAdjInitialized},
  {"isConsSetpp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_129isConsSetpp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_128isConsSetpp},
  {"isConsSetppc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_131isConsSetppc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_130isConsSetppc},
  {"isPartialdecDuplicateofFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_132isPartialdecDuplicateofFinished},
  {"isAssignedToOrigProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_134isAssignedToOrigProb},
  {"partialdecIsNoDuplicateOfPartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_136partialdecIsNoDuplicateOfPartialdecs},
  {"sortFinishedForScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_138sortFinishedForScore},
  {"translatePartialdecs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_140translatePartialdecs},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_142__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_11DetProbData_144__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_DetProbData_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_DetProbData},
  {Py_tp_doc, (void *)PyDoc_STR("Base class holding a pointer to corresponding DETPROBDATA")},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_DetProbData},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_DetProbData},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_DetProbData_spec = {
  "pygcgopt.gcg.DetProbData",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_DetProbData),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_DetProbData_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_DetProbData = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""DetProbData", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_DetProbData), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_DetProbData, /*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*/
  PyDoc_STR("Base class holding a pointer to corresponding DETPROBDATA"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_DetProbData, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_DetProbData, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_ConsPart __pyx_vtable_8pygcgopt_3gcg_ConsPart;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_ConsPart(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)o);
  p->__pyx_vtab = __pyx_vtabptr_8pygcgopt_3gcg_ConsPart;
  p->detProbData = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_ConsPart(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_ConsPart) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->detProbData);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_ConsPart(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)o;
  if (p->detProbData) {
    e = (*v)(((PyObject *)p->detProbData), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_ConsPart(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_ConsPart *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsPart *)o;
  tmp = ((PyObject*)p->detProbData);
  p->detProbData = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_ConsPart[] = {
  {"getClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_1getClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_getClassDescription},
  {"getClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_3getClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_2getClassName},
  {"getName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_5getName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_4getName},
  {"getNClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_7getNClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_6getNClasses},
  {"removeEmptyClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_8removeEmptyClasses},
  {"setClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_11setClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_10setClassDescription},
  {"setClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_13setClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_12setClassName},
  {"addClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_15addClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_14addClass},
  {"assignConsToClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_17assignConsToClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_16assignConsToClass},
  {"getAllSubsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_19getAllSubsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_18getAllSubsets},
  {"getClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_20getClassDecompInfo},
  {"getClassNameOfCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_22getClassNameOfCons},
  {"getClassOfCons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_25getClassOfCons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_24getClassOfCons},
  {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_27getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_26getNConss},
  {"getNConssOfClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_28getNConssOfClasses},
  {"isConsClassified", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_31isConsClassified, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_30isConsClassified},
  {"reduceClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_33reduceClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_32reduceClasses},
  {"setClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_34setClassDecompInfo},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_36__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8ConsPart_38__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_ConsPart_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_ConsPart},
  {Py_tp_doc, (void *)PyDoc_STR("Base class holding a pointer to corresponding ConsPartition")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_ConsPart},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_ConsPart},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_ConsPart},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_ConsPart},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_ConsPart_spec = {
  "pygcgopt.gcg.ConsPart",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_ConsPart),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_ConsPart_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_ConsPart = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""ConsPart", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_ConsPart), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_ConsPart, /*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*/
  PyDoc_STR("Base class holding a pointer to corresponding ConsPartition"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_ConsPart, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_ConsPart, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_ConsPart, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_ConsPart, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_VarPart __pyx_vtable_8pygcgopt_3gcg_VarPart;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_VarPart(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_VarPart *)o);
  p->__pyx_vtab = __pyx_vtabptr_8pygcgopt_3gcg_VarPart;
  p->detProbData = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_VarPart(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *p = (struct __pyx_obj_8pygcgopt_3gcg_VarPart *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_VarPart) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->detProbData);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_VarPart(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *p = (struct __pyx_obj_8pygcgopt_3gcg_VarPart *)o;
  if (p->detProbData) {
    e = (*v)(((PyObject *)p->detProbData), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_VarPart(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_VarPart *p = (struct __pyx_obj_8pygcgopt_3gcg_VarPart *)o;
  tmp = ((PyObject*)p->detProbData);
  p->detProbData = ((struct __pyx_obj_8pygcgopt_3gcg_DetProbData *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_VarPart[] = {
  {"getClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_1getClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_getClassDescription},
  {"getClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_3getClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_2getClassName},
  {"getName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_5getName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_4getName},
  {"getNClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_7getNClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_6getNClasses},
  {"removeEmptyClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_8removeEmptyClasses},
  {"setClassDescription", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_11setClassDescription, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_10setClassDescription},
  {"setClassName", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_13setClassName, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_12setClassName},
  {"addClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_15addClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_14addClass},
  {"assignVarToClass", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_17assignVarToClass, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_16assignVarToClass},
  {"getAllSubsets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_19getAllSubsets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_18getAllSubsets},
  {"getClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_20getClassDecompInfo},
  {"getClassNameOfVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_22getClassNameOfVar},
  {"getClassOfVar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_25getClassOfVar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_24getClassOfVar},
  {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_27getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_26getNVars},
  {"getNVarsOfClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_28getNVarsOfClasses},
  {"isVarClassified", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_31isVarClassified, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_30isVarClassified},
  {"reduceClasses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_33reduceClasses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_32reduceClasses},
  {"setClassDecompInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_34setClassDecompInfo},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_36__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_7VarPart_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_7VarPart_38__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_VarPart_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_VarPart},
  {Py_tp_doc, (void *)PyDoc_STR("Base class holding a pointer to corresponding VarPartition")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_VarPart},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_VarPart},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_VarPart},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_VarPart},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_VarPart_spec = {
  "pygcgopt.gcg.VarPart",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_VarPart),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_VarPart_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_VarPart = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""VarPart", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_VarPart), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_VarPart, /*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*/
  PyDoc_STR("Base class holding a pointer to corresponding VarPartition"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_VarPart, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_VarPart, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_VarPart, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_VarPart, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGColumn __pyx_vtable_8pygcgopt_3gcg_GCGColumn;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGColumn(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_GCGColumn *)o);
  p->__pyx_vtab = __pyx_vtabptr_8pygcgopt_3gcg_GCGColumn;
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_GCGColumn(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_GCGColumn) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_tp_richcompare_8pygcgopt_3gcg_GCGColumn(PyObject *o1, PyObject *o2, int op) {
  switch (op) {
    case Py_EQ: {
      return __pyx_pw_8pygcgopt_3gcg_9GCGColumn_3__eq__(o1, o2);
    }
    case Py_NE: {
      PyObject *ret;
      ret = __pyx_pw_8pygcgopt_3gcg_9GCGColumn_3__eq__(o1, o2);
      if (likely(ret && ret != Py_NotImplemented)) {
        int b = __Pyx_PyObject_IsTrue(ret);
        Py_DECREF(ret);
        if (unlikely(b < 0)) return NULL;
        ret = (b) ? Py_False : Py_True;
        Py_INCREF(ret);
      }
      return ret;
    }
    default: {
      return __Pyx_NewRef(Py_NotImplemented);
    }
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_GCGColumn[] = {
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_9GCGColumn_4__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_9GCGColumn_6__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_GCGColumn_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_GCGColumn},
  {Py_tp_hash, (void *)__pyx_pw_8pygcgopt_3gcg_9GCGColumn_1__hash__},
  {Py_tp_doc, (void *)PyDoc_STR("Base class holding a pointer to corresponding GCG_COL")},
  {Py_tp_richcompare, (void *)__pyx_tp_richcompare_8pygcgopt_3gcg_GCGColumn},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_GCGColumn},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_GCGColumn},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_GCGColumn_spec = {
  "pygcgopt.gcg.GCGColumn",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_GCGColumn_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_GCGColumn = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""GCGColumn", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGColumn), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_GCGColumn, /*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*/
  __pyx_pw_8pygcgopt_3gcg_9GCGColumn_1__hash__, /*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*/
  PyDoc_STR("Base class holding a pointer to corresponding GCG_COL"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_tp_richcompare_8pygcgopt_3gcg_GCGColumn, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_GCGColumn, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_GCGColumn, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Detector(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_Detector *)o);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  p->detectorname = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_Detector(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_Detector *p = (struct __pyx_obj_8pygcgopt_3gcg_Detector *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_Detector) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->model);
  Py_CLEAR(p->detectorname);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_Detector(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *p = (struct __pyx_obj_8pygcgopt_3gcg_Detector *)o;
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_Detector(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_Detector *p = (struct __pyx_obj_8pygcgopt_3gcg_Detector *)o;
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_8Detector_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_8Detector_5model_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_8Detector_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_8Detector_5model_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_8Detector_5model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_8Detector_detectorname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_8Detector_detectorname(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_8Detector_12detectorname_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_Detector[] = {
  {"freeDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_1freeDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_freeDetector},
  {"initDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_3initDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_2initDetector},
  {"exitDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_5exitDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_4exitDetector},
  {"propagatePartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_7propagatePartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_6propagatePartialdec},
  {"finishPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_9finishPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_8finishPartialdec},
  {"postprocessPartialdec", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_11postprocessPartialdec, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_10postprocessPartialdec},
  {"setParamAggressive", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_13setParamAggressive, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_12setParamAggressive},
  {"setParamDefault", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_15setParamDefault, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_14setParamDefault},
  {"setParamFast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_17setParamFast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_16setParamFast},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_18__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_8Detector_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_8Detector_20__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_Detector[] = {
  {(char *)"model", __pyx_getprop_8pygcgopt_3gcg_8Detector_model, __pyx_setprop_8pygcgopt_3gcg_8Detector_model, (char *)PyDoc_STR("model: pygcgopt.gcg.Model"), 0},
  {(char *)"detectorname", __pyx_getprop_8pygcgopt_3gcg_8Detector_detectorname, __pyx_setprop_8pygcgopt_3gcg_8Detector_detectorname, (char *)PyDoc_STR("detectorname: unicode"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_Detector_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_Detector},
  {Py_tp_doc, (void *)PyDoc_STR("Base class of the Detector Plugin")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_Detector},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_Detector},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_Detector},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_Detector},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_Detector},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_Detector_spec = {
  "pygcgopt.gcg.Detector",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Detector),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_Detector_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_Detector = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""Detector", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Detector), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_Detector, /*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*/
  PyDoc_STR("Base class of the Detector Plugin"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_Detector, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_Detector, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_Detector, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_Detector, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_Detector, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PricingSolver(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)o);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  p->solvername = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PricingSolver(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *p = (struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PricingSolver) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->model);
  Py_CLEAR(p->solvername);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_PricingSolver(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *p = (struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)o;
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_PricingSolver(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *p = (struct __pyx_obj_8pygcgopt_3gcg_PricingSolver *)o;
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_13PricingSolver_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_13PricingSolver_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_5model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_13PricingSolver_solvername(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_13PricingSolver_solvername(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_13PricingSolver_10solvername_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PricingSolver[] = {
  {"freeSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_1freeSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_freeSolver},
  {"initSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_3initSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_2initSolver},
  {"exitSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_5exitSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_4exitSolver},
  {"initSolution", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_7initSolution, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_6initSolution},
  {"exitSolution", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_9exitSolution, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_8exitSolution},
  {"updateSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_11updateSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_10updateSolver},
  {"solve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_13solve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_12solve},
  {"solveHeuristic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_14solveHeuristic},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_16__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13PricingSolver_18__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_PricingSolver[] = {
  {(char *)"model", __pyx_getprop_8pygcgopt_3gcg_13PricingSolver_model, __pyx_setprop_8pygcgopt_3gcg_13PricingSolver_model, (char *)PyDoc_STR("model: pygcgopt.gcg.Model"), 0},
  {(char *)"solvername", __pyx_getprop_8pygcgopt_3gcg_13PricingSolver_solvername, __pyx_setprop_8pygcgopt_3gcg_13PricingSolver_solvername, (char *)PyDoc_STR("solvername: unicode"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PricingSolver_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PricingSolver},
  {Py_tp_doc, (void *)PyDoc_STR("Base class of the Pricing Solver Plugin")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_PricingSolver},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_PricingSolver},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PricingSolver},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_PricingSolver},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PricingSolver},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PricingSolver_spec = {
  "pygcgopt.gcg.PricingSolver",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_PricingSolver_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PricingSolver = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PricingSolver", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PricingSolver), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PricingSolver, /*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*/
  PyDoc_STR("Base class of the Pricing Solver Plugin"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_PricingSolver, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_PricingSolver, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_PricingSolver, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_PricingSolver, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PricingSolver, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Score(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_Score *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_Score *)o);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  p->scorename = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_Score(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_Score *p = (struct __pyx_obj_8pygcgopt_3gcg_Score *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_Score) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->model);
  Py_CLEAR(p->scorename);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_Score(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_Score *p = (struct __pyx_obj_8pygcgopt_3gcg_Score *)o;
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_Score(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_Score *p = (struct __pyx_obj_8pygcgopt_3gcg_Score *)o;
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_5Score_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_5Score_5model_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_5Score_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_5Score_5model_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_5Score_5model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_5Score_scorename(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_5Score_scorename(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_5Score_9scorename_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_Score[] = {
  {"scorefree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_1scorefree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_scorefree},
  {"scorecalculate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_3scorecalculate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_2scorecalculate},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_4__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Score_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Score_6__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_Score[] = {
  {(char *)"model", __pyx_getprop_8pygcgopt_3gcg_5Score_model, __pyx_setprop_8pygcgopt_3gcg_5Score_model, (char *)PyDoc_STR("model: pygcgopt.gcg.Model"), 0},
  {(char *)"scorename", __pyx_getprop_8pygcgopt_3gcg_5Score_scorename, __pyx_setprop_8pygcgopt_3gcg_5Score_scorename, (char *)PyDoc_STR("scorename: unicode"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_Score_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_Score},
  {Py_tp_doc, (void *)PyDoc_STR("Base class of the Score Plugin")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_Score},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_Score},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_Score},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_Score},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_Score},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_Score_spec = {
  "pygcgopt.gcg.Score",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Score),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_Score_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_Score = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""Score", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Score), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_Score, /*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*/
  PyDoc_STR("Base class of the Score Plugin"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_Score, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_Score, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_Score, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_Score, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_Score, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_PartialDecomposition __pyx_vtable_8pygcgopt_3gcg_PartialDecomposition;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PartialDecomposition(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)o);
  p->__pyx_vtab = __pyx_vtabptr_8pygcgopt_3gcg_PartialDecomposition;
  p->_visualizations = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->py_block_id_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PartialDecomposition(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *p = (struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PartialDecomposition) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_visualizations);
  Py_CLEAR(p->py_block_id_map);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_PartialDecomposition(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *p = (struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)o;
  if (p->_visualizations) {
    e = (*v)(p->_visualizations, a); if (e) return e;
  }
  if (p->py_block_id_map) {
    e = (*v)(p->py_block_id_map, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_PartialDecomposition(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *p = (struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *)o;
  tmp = ((PyObject*)p->_visualizations);
  p->_visualizations = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->py_block_id_map);
  p->py_block_id_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_isSelected(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_20PartialDecomposition_isSelected(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_10isSelected_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_white_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15max_white_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_classic_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13classic_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_border_area_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17border_area_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_for_white_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19max_for_white_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_set_part_for_white_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_24set_part_for_white_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_for_white_agg_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23max_for_white_agg_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_set_part_for_white_agg_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_28set_part_for_white_agg_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_benders_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13benders_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_strong_decomp_score(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19strong_decomp_score_1__get__(o);
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition__visualizations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_20PartialDecomposition__visualizations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15_visualizations_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__(self);
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PartialDecomposition[] = {
  {"__copy__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_5__copy__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_4__copy__},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_6copy},
  {"addBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_9addBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_8addBlock},
  {"assignOpenConssToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_10assignOpenConssToMaster},
  {"isComplete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_13isComplete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_12isComplete},
  {"isTrivial", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_14isTrivial},
  {"getNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_16getNBlocks},
  {"getNConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_19getNConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_18getNConss},
  {"getNVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_21getNVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_20getNVars},
  {"getID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_23getID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_22getID},
  {"getHashValue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_24getHashValue},
  {"getDetprobdata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_26getDetprobdata},
  {"fixConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_28fixConsToMaster},
  {"fixConssToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_30fixConssToMaster},
  {"fixConsToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_32fixConsToBlockId},
  {"fixConssToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_34fixConssToBlockId},
  {"fixConsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_36fixConsToBlock},
  {"fixConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_38fixConssToBlock},
  {"hasSetppccardMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_40hasSetppccardMaster},
  {"hasSetppcMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_42hasSetppcMaster},
  {"hasSetppMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_44hasSetppMaster},
  {"getNOpenconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_46getNOpenconss},
  {"getOpenconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_48getOpenconss},
  {"getNLinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_50getNLinkingvars},
  {"getLinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_52getLinkingvars},
  {"getNMasterconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_54getNMasterconss},
  {"getMasterconss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_56getMasterconss},
  {"getNMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_58getNMastervars},
  {"getMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_60getMastervars},
  {"getNOpenvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_62getNOpenvars},
  {"getOpenvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_64getOpenvars},
  {"getNStairlinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_66getNStairlinkingvars},
  {"getConssForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_68getConssForBlock},
  {"getConssForBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_70getConssForBlocks},
  {"getNVarsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_72getNVarsForBlock},
  {"getVarsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_74getVarsForBlock},
  {"setConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_76setConsToMaster},
  {"setVarToBlockId", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_78setVarToBlockId},
  {"setVarToLinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_80setVarToLinking},
  {"fixVarToLinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_82fixVarToLinking},
  {"setVarToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_84setVarToMaster},
  {"fixVarToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_86fixVarToMaster},
  {"setVarToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_88setVarToStairlinking},
  {"fixVarToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_90fixVarToStairlinking},
  {"isConsMastercons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_92isConsMastercons},
  {"isConsOpencons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_94isConsOpencons},
  {"isVarBlockvarOfBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_96isVarBlockvarOfBlock},
  {"isVarLinkingvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_98isVarLinkingvar},
  {"isVarMastervar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_100isVarMastervar},
  {"isVarOpenvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_102isVarOpenvar},
  {"isVarStairlinkingvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_104isVarStairlinkingvar},
  {"isVarStairlinkingvarOfBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_106isVarStairlinkingvarOfBlock},
  {"deleteOpencons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_108deleteOpencons},
  {"deleteOpenvar", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_110deleteOpenvar},
  {"setUsergiven", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_112setUsergiven},
  {"getUsergiven", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_114getUsergiven},
  {"addClockTime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_116addClockTime},
  {"addPctConssFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_118addPctConssFromFree},
  {"addPctConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_120addPctConssToBlock},
  {"addPctConssToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_122addPctConssToBorder},
  {"addPctVarsFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_124addPctVarsFromFree},
  {"addPctVarsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_126addPctVarsToBlock},
  {"addPctVarsToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_128addPctVarsToBorder},
  {"getPctVarsToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_130getPctVarsToBorder},
  {"getPctVarsToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_132getPctVarsToBorderVector},
  {"getPctVarsToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_134getPctVarsToBlock},
  {"getPctVarsToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_136getPctVarsToBlockVector},
  {"getPctVarsFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_138getPctVarsFromFree},
  {"getPctVarsFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_140getPctVarsFromFreeVector},
  {"getPctConssToBorder", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_142getPctConssToBorder},
  {"getPctConssToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_144getPctConssToBorderVector},
  {"getPctConssToBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_146getPctConssToBlock},
  {"getPctConssToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_148getPctConssToBlockVector},
  {"getPctConssFromFree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_150getPctConssFromFree},
  {"getPctConssFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_152getPctConssFromFreeVector},
  {"getScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_155getScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_154getScore},
  {"calcStairlinkingVars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_156calcStairlinkingVars},
  {"checkAllConssAssigned", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_158checkAllConssAssigned},
  {"checkConsistency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_160checkConsistency},
  {"complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_163complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_162complete},
  {"sort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_165sort, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_164sort},
  {"completeByConnected", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_166completeByConnected},
  {"completeByConnectedConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_168completeByConnectedConssAdjacency},
  {"completeGreedily", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_170completeGreedily},
  {"prepare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_173prepare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_172prepare},
  {"getNDetectors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_174getNDetectors},
  {"getNReps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_177getNReps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_176getNReps},
  {"getNCoeffsForMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_178getNCoeffsForMaster},
  {"setNBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_180setNBlocks},
  {"getNTotalStairlinkingvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_182getNTotalStairlinkingvars},
  {"getNVarsForBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_184getNVarsForBlocks},
  {"findVarsLinkingToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_186findVarsLinkingToMaster},
  {"findVarsLinkingToStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_188findVarsLinkingToStairlinking},
  {"getNCoeffsForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_190getNCoeffsForBlock},
  {"addNNewBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_192addNNewBlocks},
  {"getNConssForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_194getNConssForBlock},
  {"removeMastercons", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_196removeMastercons},
  {"isAssignedToOrigProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_198isAssignedToOrigProb},
  {"refineToBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_200refineToBlocks},
  {"refineToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_202refineToMaster},
  {"alreadyAssignedConssToBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_204alreadyAssignedConssToBlocks},
  {"assignCurrentStairlinking", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_206assignCurrentStairlinking},
  {"aggInfoCalculated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_208aggInfoCalculated},
  {"considerImplicits", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_210considerImplicits},
  {"displayInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_212displayInfo},
  {"getAncestorList", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_214getAncestorList},
  {"assignSmallestComponentsButOneConssAdjacency", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_216assignSmallestComponentsButOneConssAdjacency},
  {"deleteEmptyBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_218deleteEmptyBlocks},
  {"getTranslatedpartialdecid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_220getTranslatedpartialdecid},
  {"setTranslatedpartialdecid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_222setTranslatedpartialdecid},
  {"buildDecChainString", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_224buildDecChainString},
  {"addDecChangesFromAncestor", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_226addDecChangesFromAncestor},
  {"addDetectorChainInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_228addDetectorChainInfo},
  {"getAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_230getAncestorID},
  {"copyPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_232copyPartitionStatistics},
  {"removeAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_234removeAncestorID},
  {"addAncestorID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_236addAncestorID},
  {"getBlocksForRep", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_238getBlocksForRep},
  {"getNNewBlocksVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_240getNNewBlocksVector},
  {"getNAncestors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_242getNAncestors},
  {"getNNewBlocks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_244getNNewBlocks},
  {"getFinishedByFinisher", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_246getFinishedByFinisher},
  {"getDetectorchainInfo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_248getDetectorchainInfo},
  {"shouldCompletedByConsToMaster", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_250shouldCompletedByConsToMaster},
  {"setFinishedByFinisher", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_252setFinishedByFinisher},
  {"calcAggregationInformation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_254calcAggregationInformation},
  {"setDetectorPropagated", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_256setDetectorPropagated},
  {"setDetectorFinished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_258setDetectorFinished},
  {"setDetectorFinishedOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_260setDetectorFinishedOrig},
  {"setPctConssToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_262setPctConssToBlockVector},
  {"setPctConssFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_264setPctConssFromFreeVector},
  {"setPctConssToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_266setPctConssToBorderVector},
  {"setPctVarsToBorderVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_268setPctVarsToBorderVector},
  {"setPctVarsToBlockVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_270setPctVarsToBlockVector},
  {"setPctVarsFromFreeVector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_272setPctVarsFromFreeVector},
  {"setDetectorClockTimes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_274setDetectorClockTimes},
  {"setFinishedByFinisherOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_276setFinishedByFinisherOrig},
  {"setStemsFromOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_278setStemsFromOrig},
  {"getDetectorClockTime", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_280getDetectorClockTime},
  {"getRepForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_282getRepForBlock},
  {"showVisualization", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_284showVisualization},
  {"_repr_svg_", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_286_repr_svg_},
  {"_repr_png_", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_288_repr_png_},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"setAncestorList", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_292setAncestorList},
  {"getDetectorClockTimes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_294getDetectorClockTimes},
  {"getRepVarmap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_296getRepVarmap},
  {"getVarProbindexForBlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_298getVarProbindexForBlock},
  {"setConsPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_300setConsPartitionStatistics},
  {"setVarPartitionStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_302setVarPartitionStatistics},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_304__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PartialDecomposition_306__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_PartialDecomposition[] = {
  {(char *)"isSelected", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_isSelected, __pyx_setprop_8pygcgopt_3gcg_20PartialDecomposition_isSelected, (char *)PyDoc_STR("gets whether the partialdec is currently selected in explore menue\n\n        :return: True iff the partialdec is currently selected in explore menue.\n        "), 0},
  {(char *)"max_white_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_white_score, 0, (char *)PyDoc_STR("gets the maximum white area score\n\n        \"maximum white score\" is fraction of the area of the decomposed matrix that is neither block or border\n        .. note:: -1 iff not calculated yet\n\n        :return: maximum  white area score\n        "), 0},
  {(char *)"classic_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_classic_score, 0, (char *)0, 0},
  {(char *)"border_area_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_border_area_score, 0, (char *)0, 0},
  {(char *)"max_for_white_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_for_white_score, 0, (char *)0, 0},
  {(char *)"set_part_for_white_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_set_part_for_white_score, 0, (char *)0, 0},
  {(char *)"max_for_white_agg_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_max_for_white_agg_score, 0, (char *)0, 0},
  {(char *)"set_part_for_white_agg_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_set_part_for_white_agg_score, 0, (char *)0, 0},
  {(char *)"benders_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_benders_score, 0, (char *)0, 0},
  {(char *)"strong_decomp_score", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition_strong_decomp_score, 0, (char *)0, 0},
  {(char *)"_visualizations", __pyx_getprop_8pygcgopt_3gcg_20PartialDecomposition__visualizations, __pyx_setprop_8pygcgopt_3gcg_20PartialDecomposition__visualizations, (char *)PyDoc_STR("_visualizations: dict"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PartialDecomposition_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PartialDecomposition},
  {Py_tp_repr, (void *)__pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("class to manage partial decompositions\n\n    each partialdec corresponds to one :class:`DetProbData` which contains the problem information,\n    there is one detprobdata for the original and the transformed problem.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_PartialDecomposition},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_PartialDecomposition},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PartialDecomposition},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_PartialDecomposition},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PartialDecomposition},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PartialDecomposition_spec = {
  "pygcgopt.gcg.PartialDecomposition",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_PartialDecomposition_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PartialDecomposition = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PartialDecomposition", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PartialDecomposition, /*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
  __pyx_pw_8pygcgopt_3gcg_20PartialDecomposition_291__repr__, /*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*/
  PyDoc_STR("class to manage partial decompositions\n\n    each partialdec corresponds to one :class:`DetProbData` which contains the problem information,\n    there is one detprobdata for the original and the transformed problem.\n    "), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_PartialDecomposition, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_PartialDecomposition, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_PartialDecomposition, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_PartialDecomposition, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PartialDecomposition, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_ConsClassifier(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)o);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_ConsClassifier(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_ConsClassifier) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->model);
  Py_CLEAR(p->name);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_ConsClassifier(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)o;
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_ConsClassifier(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier *)o;
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_14ConsClassifier_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_14ConsClassifier_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_14ConsClassifier_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_14ConsClassifier_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_14ConsClassifier_4name_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_ConsClassifier[] = {
  {"freeConsClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_freeConsClassifier},
  {"classify", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_3classify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_2classify},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_4__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14ConsClassifier_6__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_ConsClassifier[] = {
  {(char *)"model", __pyx_getprop_8pygcgopt_3gcg_14ConsClassifier_model, __pyx_setprop_8pygcgopt_3gcg_14ConsClassifier_model, (char *)PyDoc_STR("model: pygcgopt.gcg.Model"), 0},
  {(char *)"name", __pyx_getprop_8pygcgopt_3gcg_14ConsClassifier_name, __pyx_setprop_8pygcgopt_3gcg_14ConsClassifier_name, (char *)PyDoc_STR("name: unicode"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_ConsClassifier_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_ConsClassifier},
  {Py_tp_doc, (void *)PyDoc_STR("Base class of the Constraint Classifier Plugin")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_ConsClassifier},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_ConsClassifier},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_ConsClassifier},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_ConsClassifier},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_ConsClassifier},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_ConsClassifier_spec = {
  "pygcgopt.gcg.ConsClassifier",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_ConsClassifier_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_ConsClassifier = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""ConsClassifier", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_ConsClassifier), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_ConsClassifier, /*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*/
  PyDoc_STR("Base class of the Constraint Classifier Plugin"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_ConsClassifier, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_ConsClassifier, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_ConsClassifier, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_ConsClassifier, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_ConsClassifier, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_VarClassifier(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)o);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  p->name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_VarClassifier(PyObject *o) {
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_VarClassifier) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->model);
  Py_CLEAR(p->name);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_VarClassifier(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)o;
  if (p->model) {
    e = (*v)(((PyObject *)p->model), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_VarClassifier(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *p = (struct __pyx_obj_8pygcgopt_3gcg_VarClassifier *)o;
  tmp = ((PyObject*)p->model);
  p->model = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_13VarClassifier_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_13VarClassifier_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_5model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_8pygcgopt_3gcg_13VarClassifier_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_1__get__(o);
}

static int __pyx_setprop_8pygcgopt_3gcg_13VarClassifier_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_3__set__(o, v);
  }
  else {
    return __pyx_pw_8pygcgopt_3gcg_13VarClassifier_4name_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_VarClassifier[] = {
  {"freeVarClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_freeVarClassifier},
  {"classify", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_3classify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_2classify},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_4__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_13VarClassifier_6__setstate_cython__},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8pygcgopt_3gcg_VarClassifier[] = {
  {(char *)"model", __pyx_getprop_8pygcgopt_3gcg_13VarClassifier_model, __pyx_setprop_8pygcgopt_3gcg_13VarClassifier_model, (char *)PyDoc_STR("model: pygcgopt.gcg.Model"), 0},
  {(char *)"name", __pyx_getprop_8pygcgopt_3gcg_13VarClassifier_name, __pyx_setprop_8pygcgopt_3gcg_13VarClassifier_name, (char *)PyDoc_STR("name: unicode"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_VarClassifier_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_VarClassifier},
  {Py_tp_doc, (void *)PyDoc_STR("Base class of the Variable Classifier Plugin")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_VarClassifier},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_VarClassifier},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_VarClassifier},
  {Py_tp_getset, (void *)__pyx_getsets_8pygcgopt_3gcg_VarClassifier},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_VarClassifier},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_VarClassifier_spec = {
  "pygcgopt.gcg.VarClassifier",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_8pygcgopt_3gcg_VarClassifier_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_VarClassifier = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""VarClassifier", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_VarClassifier), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_VarClassifier, /*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*/
  PyDoc_STR("Base class of the Variable Classifier Plugin"), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_VarClassifier, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_VarClassifier, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_VarClassifier, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8pygcgopt_3gcg_VarClassifier, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_VarClassifier, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS[] = {
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS___reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_2__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS_spec = {
  "pygcgopt.gcg.PY_GCG_PRICINGSTATUS",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PY_GCG_PRICINGSTATUS", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, /*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_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_USERGIVEN(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PY_USERGIVEN(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PY_USERGIVEN) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PY_USERGIVEN[] = {
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN___reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_12PY_USERGIVEN_2__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PY_USERGIVEN_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PY_USERGIVEN},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PY_USERGIVEN},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PY_USERGIVEN},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PY_USERGIVEN_spec = {
  "pygcgopt.gcg.PY_USERGIVEN",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_PY_USERGIVEN_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PY_USERGIVEN = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PY_USERGIVEN", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_USERGIVEN), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PY_USERGIVEN, /*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_8pygcgopt_3gcg_PY_USERGIVEN, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PY_USERGIVEN, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_VAR_DECOMPINFO(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PY_VAR_DECOMPINFO(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PY_VAR_DECOMPINFO) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PY_VAR_DECOMPINFO[] = {
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO___reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_2__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PY_VAR_DECOMPINFO},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PY_VAR_DECOMPINFO},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PY_VAR_DECOMPINFO},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO_spec = {
  "pygcgopt.gcg.PY_VAR_DECOMPINFO",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PY_VAR_DECOMPINFO", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_VAR_DECOMPINFO), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, /*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_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_PY_CONS_DECOMPINFO(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_8pygcgopt_3gcg_PY_CONS_DECOMPINFO(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_8pygcgopt_3gcg_PY_CONS_DECOMPINFO) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_PY_CONS_DECOMPINFO[] = {
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO___reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_2__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_8pygcgopt_3gcg_PY_CONS_DECOMPINFO},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_PY_CONS_DECOMPINFO},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_PY_CONS_DECOMPINFO},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO_spec = {
  "pygcgopt.gcg.PY_CONS_DECOMPINFO",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""PY_CONS_DECOMPINFO", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_PY_CONS_DECOMPINFO), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, /*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_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_Model __pyx_vtable_8pygcgopt_3gcg_Model;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_Model(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_Model *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_9pyscipopt_4scip_Model, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_8pygcgopt_3gcg_Model *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9pyscipopt_4scip_Model*)__pyx_vtabptr_8pygcgopt_3gcg_Model;
  return o;
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_Model(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_9pyscipopt_4scip_Model)) ? ((__pyx_ptype_9pyscipopt_4scip_Model->tp_traverse) ? __pyx_ptype_9pyscipopt_4scip_Model->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_8pygcgopt_3gcg_Model)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_Model(PyObject *o) {
  if (likely(__pyx_ptype_9pyscipopt_4scip_Model)) { if (__pyx_ptype_9pyscipopt_4scip_Model->tp_clear) __pyx_ptype_9pyscipopt_4scip_Model->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_8pygcgopt_3gcg_Model);
  return 0;
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_Model[] = {
  {"includeDefaultPlugins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_1includeDefaultPlugins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_includeDefaultPlugins},
  {"addVar", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_3addVar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_2addVar},
  {"presolve", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_5presolve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_4presolve},
  {"detect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_7detect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_6detect},
  {"printStatistics", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_9printStatistics, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_8printStatistics},
  {"printVersion", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_11printVersion, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_10printVersion},
  {"optimize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_13optimize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_12optimize},
  {"getDualbound", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_15getDualbound, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_14getDualbound},
  {"getDetprobdataOrig", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_17getDetprobdataOrig, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_16getDetprobdataOrig},
  {"getDetprobdataPresolved", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_18getDetprobdataPresolved},
  {"listDecompositions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_21listDecompositions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_20listDecompositions},
  {"getPartDecompFromID", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_23getPartDecompFromID, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_22getPartDecompFromID},
  {"addDecompositionFromConss", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_25addDecompositionFromConss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_24addDecompositionFromConss},
  {"addPreexistingPartialDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_26addPreexistingPartialDecomposition},
  {"addDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_29addDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_28addDecomposition},
  {"createDecomposition", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_31createDecomposition, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_30createDecomposition},
  {"includePricingSolver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_33includePricingSolver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_32includePricingSolver},
  {"listPricingSolvers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_35listPricingSolvers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_34listPricingSolvers},
  {"setPricingSolverEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_36setPricingSolverEnabled},
  {"setPricingSolverExactEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_38setPricingSolverExactEnabled},
  {"setPricingSolverHeuristicEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_40setPricingSolverHeuristicEnabled},
  {"includeConsClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_43includeConsClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_42includeConsClassifier},
  {"getNConsClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_45getNConsClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_44getNConsClassifiers},
  {"listConsClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_47listConsClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_46listConsClassifiers},
  {"includeVarClassifier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_49includeVarClassifier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_48includeVarClassifier},
  {"getNVarClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_51getNVarClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_50getNVarClassifiers},
  {"listVarClassifiers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_53listVarClassifiers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_52listVarClassifiers},
  {"setVarClassifierEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_54setVarClassifierEnabled},
  {"includeDetector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_57includeDetector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_56includeDetector},
  {"includeScore", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_59includeScore, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_58includeScore},
  {"listDetectors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_61listDetectors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_60listDetectors},
  {"listScores", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_63listScores, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_62listScores},
  {"setDetectorEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_65setDetectorEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_64setDetectorEnabled},
  {"setDetectorFinishingEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_66setDetectorFinishingEnabled},
  {"setDetectorPostprocessingEnabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_68setDetectorPostprocessingEnabled},
  {"getMasterProb", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_71getMasterProb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_70getMasterProb},
  {"setGCGSeparating", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_73setGCGSeparating, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_72setGCGSeparating},
  {"writeAllDecomps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_75writeAllDecomps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_74writeAllDecomps},
  {"getMastervars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_77getMastervars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_76getMastervars},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_79__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_78__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_5Model_81__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_5Model_80__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_Model_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("Main class for interaction with the GCG solver.")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_Model},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_Model},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_Model},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_Model},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_Model_spec = {
  "pygcgopt.gcg.Model",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Model),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_8pygcgopt_3gcg_Model_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_Model = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""Model", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_Model), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*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|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Main class for interaction with the GCG solver."), /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_Model, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_Model, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_Model, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_Model, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGPricingModel __pyx_vtable_8pygcgopt_3gcg_GCGPricingModel;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGPricingModel(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_9pyscipopt_4scip_Model, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9pyscipopt_4scip_Model*)__pyx_vtabptr_8pygcgopt_3gcg_GCGPricingModel;
  return o;
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_GCGPricingModel(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_9pyscipopt_4scip_Model)) ? ((__pyx_ptype_9pyscipopt_4scip_Model->tp_traverse) ? __pyx_ptype_9pyscipopt_4scip_Model->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_8pygcgopt_3gcg_GCGPricingModel)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_GCGPricingModel(PyObject *o) {
  if (likely(__pyx_ptype_9pyscipopt_4scip_Model)) { if (__pyx_ptype_9pyscipopt_4scip_Model->tp_clear) __pyx_ptype_9pyscipopt_4scip_Model->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_8pygcgopt_3gcg_GCGPricingModel);
  return 0;
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_GCGPricingModel[] = {
  {"createGcgCol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_createGcgCol},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_2__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_15GCGPricingModel_4__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_GCGPricingModel_slots[] = {
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_GCGPricingModel},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_GCGPricingModel},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_GCGPricingModel},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_GCGPricingModel},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_GCGPricingModel_spec = {
  "pygcgopt.gcg.GCGPricingModel",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_8pygcgopt_3gcg_GCGPricingModel_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_GCGPricingModel = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""GCGPricingModel", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*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|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_GCGPricingModel, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_GCGPricingModel, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_GCGPricingModel, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_GCGPricingModel, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_8pygcgopt_3gcg_GCGMasterModel __pyx_vtable_8pygcgopt_3gcg_GCGMasterModel;

static PyObject *__pyx_tp_new_8pygcgopt_3gcg_GCGMasterModel(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_9pyscipopt_4scip_Model, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_9pyscipopt_4scip_Model*)__pyx_vtabptr_8pygcgopt_3gcg_GCGMasterModel;
  return o;
}

static int __pyx_tp_traverse_8pygcgopt_3gcg_GCGMasterModel(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_9pyscipopt_4scip_Model)) ? ((__pyx_ptype_9pyscipopt_4scip_Model->tp_traverse) ? __pyx_ptype_9pyscipopt_4scip_Model->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_8pygcgopt_3gcg_GCGMasterModel)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_8pygcgopt_3gcg_GCGMasterModel(PyObject *o) {
  if (likely(__pyx_ptype_9pyscipopt_4scip_Model)) { if (__pyx_ptype_9pyscipopt_4scip_Model->tp_clear) __pyx_ptype_9pyscipopt_4scip_Model->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_8pygcgopt_3gcg_GCGMasterModel);
  return 0;
}

static PyMethodDef __pyx_methods_8pygcgopt_3gcg_GCGMasterModel[] = {
  {"addCol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_1addCol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_addCol},
  {"getOrigvars", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_2getOrigvars},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_4__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_8pygcgopt_3gcg_14GCGMasterModel_6__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_8pygcgopt_3gcg_GCGMasterModel_slots[] = {
  {Py_tp_traverse, (void *)__pyx_tp_traverse_8pygcgopt_3gcg_GCGMasterModel},
  {Py_tp_clear, (void *)__pyx_tp_clear_8pygcgopt_3gcg_GCGMasterModel},
  {Py_tp_methods, (void *)__pyx_methods_8pygcgopt_3gcg_GCGMasterModel},
  {Py_tp_new, (void *)__pyx_tp_new_8pygcgopt_3gcg_GCGMasterModel},
  {0, 0},
};
static PyType_Spec __pyx_type_8pygcgopt_3gcg_GCGMasterModel_spec = {
  "pygcgopt.gcg.GCGMasterModel",
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_8pygcgopt_3gcg_GCGMasterModel_slots,
};
#else

static PyTypeObject __pyx_type_8pygcgopt_3gcg_GCGMasterModel = {
  PyVarObject_HEAD_INIT(0, 0)
  "pygcgopt.gcg.""GCGMasterModel", /*tp_name*/
  sizeof(struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*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|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8pygcgopt_3gcg_GCGMasterModel, /*tp_traverse*/
  __pyx_tp_clear_8pygcgopt_3gcg_GCGMasterModel, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8pygcgopt_3gcg_GCGMasterModel, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8pygcgopt_3gcg_GCGMasterModel, /*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
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};
#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
/* #### Code section: pystring_table ### */

static int __Pyx_CreateStringTabAndInitStrings(void) {
  __Pyx_StringTabEntry __pyx_string_tab[] = {
    {&__pyx_n_s_ConsClassifier, __pyx_k_ConsClassifier, sizeof(__pyx_k_ConsClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_ConsClassifier___reduce_cython, __pyx_k_ConsClassifier___reduce_cython, sizeof(__pyx_k_ConsClassifier___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ConsClassifier___setstate_cython, __pyx_k_ConsClassifier___setstate_cython, sizeof(__pyx_k_ConsClassifier___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ConsClassifier_classify, __pyx_k_ConsClassifier_classify, sizeof(__pyx_k_ConsClassifier_classify), 0, 0, 1, 1},
    {&__pyx_n_s_ConsClassifier_freeConsClassifie, __pyx_k_ConsClassifier_freeConsClassifie, sizeof(__pyx_k_ConsClassifier_freeConsClassifie), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart, __pyx_k_ConsPart, sizeof(__pyx_k_ConsPart), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart___reduce_cython, __pyx_k_ConsPart___reduce_cython, sizeof(__pyx_k_ConsPart___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart___setstate_cython, __pyx_k_ConsPart___setstate_cython, sizeof(__pyx_k_ConsPart___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_addClass, __pyx_k_ConsPart_addClass, sizeof(__pyx_k_ConsPart_addClass), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_assignConsToClass, __pyx_k_ConsPart_assignConsToClass, sizeof(__pyx_k_ConsPart_assignConsToClass), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getAllSubsets, __pyx_k_ConsPart_getAllSubsets, sizeof(__pyx_k_ConsPart_getAllSubsets), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getClassDecompInfo, __pyx_k_ConsPart_getClassDecompInfo, sizeof(__pyx_k_ConsPart_getClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getClassDescription, __pyx_k_ConsPart_getClassDescription, sizeof(__pyx_k_ConsPart_getClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getClassName, __pyx_k_ConsPart_getClassName, sizeof(__pyx_k_ConsPart_getClassName), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getClassNameOfCons, __pyx_k_ConsPart_getClassNameOfCons, sizeof(__pyx_k_ConsPart_getClassNameOfCons), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getClassOfCons, __pyx_k_ConsPart_getClassOfCons, sizeof(__pyx_k_ConsPart_getClassOfCons), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getNClasses, __pyx_k_ConsPart_getNClasses, sizeof(__pyx_k_ConsPart_getNClasses), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getNConss, __pyx_k_ConsPart_getNConss, sizeof(__pyx_k_ConsPart_getNConss), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getNConssOfClasses, __pyx_k_ConsPart_getNConssOfClasses, sizeof(__pyx_k_ConsPart_getNConssOfClasses), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_getName, __pyx_k_ConsPart_getName, sizeof(__pyx_k_ConsPart_getName), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_isConsClassified, __pyx_k_ConsPart_isConsClassified, sizeof(__pyx_k_ConsPart_isConsClassified), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_reduceClasses, __pyx_k_ConsPart_reduceClasses, sizeof(__pyx_k_ConsPart_reduceClasses), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_removeEmptyClasses, __pyx_k_ConsPart_removeEmptyClasses, sizeof(__pyx_k_ConsPart_removeEmptyClasses), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_setClassDecompInfo, __pyx_k_ConsPart_setClassDecompInfo, sizeof(__pyx_k_ConsPart_setClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_setClassDescription, __pyx_k_ConsPart_setClassDescription, sizeof(__pyx_k_ConsPart_setClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_ConsPart_setClassName, __pyx_k_ConsPart_setClassName, sizeof(__pyx_k_ConsPart_setClassName), 0, 0, 1, 1},
    {&__pyx_kp_u_Consclassifier_0_yields_a_classi, __pyx_k_Consclassifier_0_yields_a_classi, sizeof(__pyx_k_Consclassifier_0_yields_a_classi), 0, 1, 0, 0},
    {&__pyx_n_s_DetProbData, __pyx_k_DetProbData, sizeof(__pyx_k_DetProbData), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData___reduce_cython, __pyx_k_DetProbData___reduce_cython, sizeof(__pyx_k_DetProbData___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData___setstate_cython, __pyx_k_DetProbData___setstate_cython, sizeof(__pyx_k_DetProbData___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addCandidatesNBlocks, __pyx_k_DetProbData_addCandidatesNBlocks, sizeof(__pyx_k_DetProbData_addCandidatesNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addConsPartition, __pyx_k_DetProbData_addConsPartition, sizeof(__pyx_k_DetProbData_addConsPartition), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addPartialdecToAnces, __pyx_k_DetProbData_addPartialdecToAnces, sizeof(__pyx_k_DetProbData_addPartialdecToAnces), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addPartialdecToFinis, __pyx_k_DetProbData_addPartialdecToFinis, sizeof(__pyx_k_DetProbData_addPartialdecToFinis), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addPartialdecToFinis_2, __pyx_k_DetProbData_addPartialdecToFinis_2, sizeof(__pyx_k_DetProbData_addPartialdecToFinis_2), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addPartialdecToOpen, __pyx_k_DetProbData_addPartialdecToOpen, sizeof(__pyx_k_DetProbData_addPartialdecToOpen), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_addVarPartition, __pyx_k_DetProbData_addVarPartition, sizeof(__pyx_k_DetProbData_addVarPartition), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_candidatesNBlocks, __pyx_k_DetProbData_candidatesNBlocks, sizeof(__pyx_k_DetProbData_candidatesNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_classificationtime, __pyx_k_DetProbData_classificationtime, sizeof(__pyx_k_DetProbData_classificationtime), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_clearAncestorPartial, __pyx_k_DetProbData_clearAncestorPartial, sizeof(__pyx_k_DetProbData_clearAncestorPartial), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_clearCurrentPartiald, __pyx_k_DetProbData_clearCurrentPartiald, sizeof(__pyx_k_DetProbData_clearCurrentPartiald), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_clearFinishedPartial, __pyx_k_DetProbData_clearFinishedPartial, sizeof(__pyx_k_DetProbData_clearFinishedPartial), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_conspartitioncollect, __pyx_k_DetProbData_conspartitioncollect, sizeof(__pyx_k_DetProbData_conspartitioncollect), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_createConsPart, __pyx_k_DetProbData_createConsPart, sizeof(__pyx_k_DetProbData_createConsPart), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_createConssAdjacency, __pyx_k_DetProbData_createConssAdjacency, sizeof(__pyx_k_DetProbData_createConssAdjacency), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_createVarPart, __pyx_k_DetProbData_createVarPart, sizeof(__pyx_k_DetProbData_createVarPart), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_freeTemporaryData, __pyx_k_DetProbData_freeTemporaryData, sizeof(__pyx_k_DetProbData_freeTemporaryData), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getAncestorPartialde, __pyx_k_DetProbData_getAncestorPartialde, sizeof(__pyx_k_DetProbData_getAncestorPartialde), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getCons, __pyx_k_DetProbData_getCons, sizeof(__pyx_k_DetProbData_getCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getConsPartition, __pyx_k_DetProbData_getConsPartition, sizeof(__pyx_k_DetProbData_getConsPartition), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getConsPartitions, __pyx_k_DetProbData_getConsPartitions, sizeof(__pyx_k_DetProbData_getConsPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getConssForCons, __pyx_k_DetProbData_getConssForCons, sizeof(__pyx_k_DetProbData_getConssForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getConssForVar, __pyx_k_DetProbData_getConssForVar, sizeof(__pyx_k_DetProbData_getConssForVar), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getFinishedPartialde, __pyx_k_DetProbData_getFinishedPartialde, sizeof(__pyx_k_DetProbData_getFinishedPartialde), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getFinishedPartialde_2, __pyx_k_DetProbData_getFinishedPartialde_2, sizeof(__pyx_k_DetProbData_getFinishedPartialde_2), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getIndexForCons, __pyx_k_DetProbData_getIndexForCons, sizeof(__pyx_k_DetProbData_getIndexForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getIndexForVar, __pyx_k_DetProbData_getIndexForVar, sizeof(__pyx_k_DetProbData_getIndexForVar), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getModel, __pyx_k_DetProbData_getModel, sizeof(__pyx_k_DetProbData_getModel), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNAncestorPartiald, __pyx_k_DetProbData_getNAncestorPartiald, sizeof(__pyx_k_DetProbData_getNAncestorPartiald), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNConsPartitions, __pyx_k_DetProbData_getNConsPartitions, sizeof(__pyx_k_DetProbData_getNConsPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNConss, __pyx_k_DetProbData_getNConss, sizeof(__pyx_k_DetProbData_getNConss), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNConssForCons, __pyx_k_DetProbData_getNConssForCons, sizeof(__pyx_k_DetProbData_getNConssForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNConssForVar, __pyx_k_DetProbData_getNConssForVar, sizeof(__pyx_k_DetProbData_getNConssForVar), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNFinishedPartiald, __pyx_k_DetProbData_getNFinishedPartiald, sizeof(__pyx_k_DetProbData_getNFinishedPartiald), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNNonzeros, __pyx_k_DetProbData_getNNonzeros, sizeof(__pyx_k_DetProbData_getNNonzeros), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNOpenPartialdecs, __pyx_k_DetProbData_getNOpenPartialdecs, sizeof(__pyx_k_DetProbData_getNOpenPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNPartialdecs, __pyx_k_DetProbData_getNPartialdecs, sizeof(__pyx_k_DetProbData_getNPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNVarPartitions, __pyx_k_DetProbData_getNVarPartitions, sizeof(__pyx_k_DetProbData_getNVarPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNVars, __pyx_k_DetProbData_getNVars, sizeof(__pyx_k_DetProbData_getNVars), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getNVarsForCons, __pyx_k_DetProbData_getNVarsForCons, sizeof(__pyx_k_DetProbData_getNVarsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getOpenPartialdecs, __pyx_k_DetProbData_getOpenPartialdecs, sizeof(__pyx_k_DetProbData_getOpenPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getOrigVarsFixedZero, __pyx_k_DetProbData_getOrigVarsFixedZero, sizeof(__pyx_k_DetProbData_getOrigVarsFixedZero), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getRelevantConss, __pyx_k_DetProbData_getRelevantConss, sizeof(__pyx_k_DetProbData_getRelevantConss), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getRelevantVars, __pyx_k_DetProbData_getRelevantVars, sizeof(__pyx_k_DetProbData_getRelevantVars), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getSortedCandidatesN, __pyx_k_DetProbData_getSortedCandidatesN, sizeof(__pyx_k_DetProbData_getSortedCandidatesN), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getVal, __pyx_k_DetProbData_getVal, sizeof(__pyx_k_DetProbData_getVal), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getValsForCons, __pyx_k_DetProbData_getValsForCons, sizeof(__pyx_k_DetProbData_getValsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getVar, __pyx_k_DetProbData_getVar, sizeof(__pyx_k_DetProbData_getVar), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getVarPartition, __pyx_k_DetProbData_getVarPartition, sizeof(__pyx_k_DetProbData_getVarPartition), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getVarPartitions, __pyx_k_DetProbData_getVarPartitions, sizeof(__pyx_k_DetProbData_getVarPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_getVarsForCons, __pyx_k_DetProbData_getVarsForCons, sizeof(__pyx_k_DetProbData_getVarsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isAssignedToOrigProb, __pyx_k_DetProbData_isAssignedToOrigProb, sizeof(__pyx_k_DetProbData_isAssignedToOrigProb), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isConsCardinalityCon, __pyx_k_DetProbData_isConsCardinalityCon, sizeof(__pyx_k_DetProbData_isConsCardinalityCon), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isConsSetpp, __pyx_k_DetProbData_isConsSetpp, sizeof(__pyx_k_DetProbData_isConsSetpp), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isConsSetppc, __pyx_k_DetProbData_isConsSetppc, sizeof(__pyx_k_DetProbData_isConsSetppc), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isConssAdjInitialize, __pyx_k_DetProbData_isConssAdjInitialize, sizeof(__pyx_k_DetProbData_isConssAdjInitialize), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_isPartialdecDuplicat, __pyx_k_DetProbData_isPartialdecDuplicat, sizeof(__pyx_k_DetProbData_isPartialdecDuplicat), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_nblockscandidatescal, __pyx_k_DetProbData_nblockscandidatescal, sizeof(__pyx_k_DetProbData_nblockscandidatescal), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_partialdecIsNoDuplic, __pyx_k_DetProbData_partialdecIsNoDuplic, sizeof(__pyx_k_DetProbData_partialdecIsNoDuplic), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_postprocessingtime, __pyx_k_DetProbData_postprocessingtime, sizeof(__pyx_k_DetProbData_postprocessingtime), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_sortFinishedForScore, __pyx_k_DetProbData_sortFinishedForScore, sizeof(__pyx_k_DetProbData_sortFinishedForScore), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_translatePartialdecs, __pyx_k_DetProbData_translatePartialdecs, sizeof(__pyx_k_DetProbData_translatePartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_translatingtime, __pyx_k_DetProbData_translatingtime, sizeof(__pyx_k_DetProbData_translatingtime), 0, 0, 1, 1},
    {&__pyx_n_s_DetProbData_varpartitioncollecti, __pyx_k_DetProbData_varpartitioncollecti, sizeof(__pyx_k_DetProbData_varpartitioncollecti), 0, 0, 1, 1},
    {&__pyx_n_s_Detector, __pyx_k_Detector, sizeof(__pyx_k_Detector), 0, 0, 1, 1},
    {&__pyx_n_s_Detector___reduce_cython, __pyx_k_Detector___reduce_cython, sizeof(__pyx_k_Detector___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Detector___setstate_cython, __pyx_k_Detector___setstate_cython, sizeof(__pyx_k_Detector___setstate_cython), 0, 0, 1, 1},
    {&__pyx_kp_u_Detector_callback_returned_of_ty, __pyx_k_Detector_callback_returned_of_ty, sizeof(__pyx_k_Detector_callback_returned_of_ty), 0, 1, 0, 0},
    {&__pyx_n_s_Detector_exitDetector, __pyx_k_Detector_exitDetector, sizeof(__pyx_k_Detector_exitDetector), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_finishPartialdec, __pyx_k_Detector_finishPartialdec, sizeof(__pyx_k_Detector_finishPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_freeDetector, __pyx_k_Detector_freeDetector, sizeof(__pyx_k_Detector_freeDetector), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_initDetector, __pyx_k_Detector_initDetector, sizeof(__pyx_k_Detector_initDetector), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_postprocessPartialdec, __pyx_k_Detector_postprocessPartialdec, sizeof(__pyx_k_Detector_postprocessPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_propagatePartialdec, __pyx_k_Detector_propagatePartialdec, sizeof(__pyx_k_Detector_propagatePartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_setParamAggressive, __pyx_k_Detector_setParamAggressive, sizeof(__pyx_k_Detector_setParamAggressive), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_setParamDefault, __pyx_k_Detector_setParamDefault, sizeof(__pyx_k_Detector_setParamDefault), 0, 0, 1, 1},
    {&__pyx_n_s_Detector_setParamFast, __pyx_k_Detector_setParamFast, sizeof(__pyx_k_Detector_setParamFast), 0, 0, 1, 1},
    {&__pyx_kp_u_Expected_iterable_as_first_argum, __pyx_k_Expected_iterable_as_first_argum, sizeof(__pyx_k_Expected_iterable_as_first_argum), 0, 1, 0, 0},
    {&__pyx_kp_u_Format, __pyx_k_Format, sizeof(__pyx_k_Format), 0, 1, 0, 0},
    {&__pyx_n_s_GCGColumn, __pyx_k_GCGColumn, sizeof(__pyx_k_GCGColumn), 0, 0, 1, 1},
    {&__pyx_n_s_GCGColumn___reduce_cython, __pyx_k_GCGColumn___reduce_cython, sizeof(__pyx_k_GCGColumn___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_GCGColumn___setstate_cython, __pyx_k_GCGColumn___setstate_cython, sizeof(__pyx_k_GCGColumn___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_GCGMasterModel, __pyx_k_GCGMasterModel, sizeof(__pyx_k_GCGMasterModel), 0, 0, 1, 1},
    {&__pyx_n_s_GCGMasterModel___reduce_cython, __pyx_k_GCGMasterModel___reduce_cython, sizeof(__pyx_k_GCGMasterModel___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_GCGMasterModel___setstate_cython, __pyx_k_GCGMasterModel___setstate_cython, sizeof(__pyx_k_GCGMasterModel___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_GCGMasterModel_addCol, __pyx_k_GCGMasterModel_addCol, sizeof(__pyx_k_GCGMasterModel_addCol), 0, 0, 1, 1},
    {&__pyx_n_s_GCGMasterModel_getOrigvars, __pyx_k_GCGMasterModel_getOrigvars, sizeof(__pyx_k_GCGMasterModel_getOrigvars), 0, 0, 1, 1},
    {&__pyx_n_s_GCGPricingModel, __pyx_k_GCGPricingModel, sizeof(__pyx_k_GCGPricingModel), 0, 0, 1, 1},
    {&__pyx_n_s_GCGPricingModel___reduce_cython, __pyx_k_GCGPricingModel___reduce_cython, sizeof(__pyx_k_GCGPricingModel___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_GCGPricingModel___setstate_cytho, __pyx_k_GCGPricingModel___setstate_cytho, sizeof(__pyx_k_GCGPricingModel___setstate_cytho), 0, 0, 1, 1},
    {&__pyx_n_s_GCGPricingModel_createGcgCol, __pyx_k_GCGPricingModel_createGcgCol, sizeof(__pyx_k_GCGPricingModel_createGcgCol), 0, 0, 1, 1},
    {&__pyx_n_s_INFEASIBLE, __pyx_k_INFEASIBLE, sizeof(__pyx_k_INFEASIBLE), 0, 0, 1, 1},
    {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0, __pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 0, 1, 0},
    {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2, __pyx_k_Incompatible_checksums_0x_x_vs_0_2, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_2), 0, 0, 1, 0},
    {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_3, __pyx_k_Incompatible_checksums_0x_x_vs_0_3, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_3), 0, 0, 1, 0},
    {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_4, __pyx_k_Incompatible_checksums_0x_x_vs_0_4, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_4), 0, 0, 1, 0},
    {&__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_5, __pyx_k_Incompatible_checksums_0x_x_vs_0_5, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0_5), 0, 0, 1, 0},
    {&__pyx_n_s_Iterable, __pyx_k_Iterable, sizeof(__pyx_k_Iterable), 0, 0, 1, 1},
    {&__pyx_kp_u_Length_of_value_for_decchar_must, __pyx_k_Length_of_value_for_decchar_must, sizeof(__pyx_k_Length_of_value_for_decchar_must), 0, 1, 0, 0},
    {&__pyx_n_s_List, __pyx_k_List, sizeof(__pyx_k_List), 0, 0, 1, 1},
    {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
    {&__pyx_n_s_Model, __pyx_k_Model, sizeof(__pyx_k_Model), 0, 0, 1, 1},
    {&__pyx_n_s_Model___reduce_cython, __pyx_k_Model___reduce_cython, sizeof(__pyx_k_Model___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Model___setstate_cython, __pyx_k_Model___setstate_cython, sizeof(__pyx_k_Model___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Model_addDecomposition, __pyx_k_Model_addDecomposition, sizeof(__pyx_k_Model_addDecomposition), 0, 0, 1, 1},
    {&__pyx_n_s_Model_addDecompositionFromConss, __pyx_k_Model_addDecompositionFromConss, sizeof(__pyx_k_Model_addDecompositionFromConss), 0, 0, 1, 1},
    {&__pyx_n_s_Model_addPreexistingPartialDecom, __pyx_k_Model_addPreexistingPartialDecom, sizeof(__pyx_k_Model_addPreexistingPartialDecom), 0, 0, 1, 1},
    {&__pyx_n_s_Model_addVar, __pyx_k_Model_addVar, sizeof(__pyx_k_Model_addVar), 0, 0, 1, 1},
    {&__pyx_n_s_Model_createDecomposition, __pyx_k_Model_createDecomposition, sizeof(__pyx_k_Model_createDecomposition), 0, 0, 1, 1},
    {&__pyx_n_s_Model_detect, __pyx_k_Model_detect, sizeof(__pyx_k_Model_detect), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getDetprobdataOrig, __pyx_k_Model_getDetprobdataOrig, sizeof(__pyx_k_Model_getDetprobdataOrig), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getDetprobdataPresolved, __pyx_k_Model_getDetprobdataPresolved, sizeof(__pyx_k_Model_getDetprobdataPresolved), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getDualbound, __pyx_k_Model_getDualbound, sizeof(__pyx_k_Model_getDualbound), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getMasterProb, __pyx_k_Model_getMasterProb, sizeof(__pyx_k_Model_getMasterProb), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getMastervars, __pyx_k_Model_getMastervars, sizeof(__pyx_k_Model_getMastervars), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getNConsClassifiers, __pyx_k_Model_getNConsClassifiers, sizeof(__pyx_k_Model_getNConsClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getNVarClassifiers, __pyx_k_Model_getNVarClassifiers, sizeof(__pyx_k_Model_getNVarClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_Model_getPartDecompFromID, __pyx_k_Model_getPartDecompFromID, sizeof(__pyx_k_Model_getPartDecompFromID), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includeConsClassifier, __pyx_k_Model_includeConsClassifier, sizeof(__pyx_k_Model_includeConsClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includeDefaultPlugins, __pyx_k_Model_includeDefaultPlugins, sizeof(__pyx_k_Model_includeDefaultPlugins), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includeDetector, __pyx_k_Model_includeDetector, sizeof(__pyx_k_Model_includeDetector), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includePricingSolver, __pyx_k_Model_includePricingSolver, sizeof(__pyx_k_Model_includePricingSolver), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includeScore, __pyx_k_Model_includeScore, sizeof(__pyx_k_Model_includeScore), 0, 0, 1, 1},
    {&__pyx_n_s_Model_includeVarClassifier, __pyx_k_Model_includeVarClassifier, sizeof(__pyx_k_Model_includeVarClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listConsClassifiers, __pyx_k_Model_listConsClassifiers, sizeof(__pyx_k_Model_listConsClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listDecompositions, __pyx_k_Model_listDecompositions, sizeof(__pyx_k_Model_listDecompositions), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listDetectors, __pyx_k_Model_listDetectors, sizeof(__pyx_k_Model_listDetectors), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listPricingSolvers, __pyx_k_Model_listPricingSolvers, sizeof(__pyx_k_Model_listPricingSolvers), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listScores, __pyx_k_Model_listScores, sizeof(__pyx_k_Model_listScores), 0, 0, 1, 1},
    {&__pyx_n_s_Model_listVarClassifiers, __pyx_k_Model_listVarClassifiers, sizeof(__pyx_k_Model_listVarClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_Model_optimize, __pyx_k_Model_optimize, sizeof(__pyx_k_Model_optimize), 0, 0, 1, 1},
    {&__pyx_n_s_Model_presolve, __pyx_k_Model_presolve, sizeof(__pyx_k_Model_presolve), 0, 0, 1, 1},
    {&__pyx_n_s_Model_printStatistics, __pyx_k_Model_printStatistics, sizeof(__pyx_k_Model_printStatistics), 0, 0, 1, 1},
    {&__pyx_n_s_Model_printVersion, __pyx_k_Model_printVersion, sizeof(__pyx_k_Model_printVersion), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setDetectorEnabled, __pyx_k_Model_setDetectorEnabled, sizeof(__pyx_k_Model_setDetectorEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setDetectorFinishingEnable, __pyx_k_Model_setDetectorFinishingEnable, sizeof(__pyx_k_Model_setDetectorFinishingEnable), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setDetectorPostprocessingE, __pyx_k_Model_setDetectorPostprocessingE, sizeof(__pyx_k_Model_setDetectorPostprocessingE), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setGCGSeparating, __pyx_k_Model_setGCGSeparating, sizeof(__pyx_k_Model_setGCGSeparating), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setPricingSolverEnabled, __pyx_k_Model_setPricingSolverEnabled, sizeof(__pyx_k_Model_setPricingSolverEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setPricingSolverExactEnabl, __pyx_k_Model_setPricingSolverExactEnabl, sizeof(__pyx_k_Model_setPricingSolverExactEnabl), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setPricingSolverHeuristicE, __pyx_k_Model_setPricingSolverHeuristicE, sizeof(__pyx_k_Model_setPricingSolverHeuristicE), 0, 0, 1, 1},
    {&__pyx_n_s_Model_setVarClassifierEnabled, __pyx_k_Model_setVarClassifierEnabled, sizeof(__pyx_k_Model_setVarClassifierEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_Model_writeAllDecomps, __pyx_k_Model_writeAllDecomps, sizeof(__pyx_k_Model_writeAllDecomps), 0, 0, 1, 1},
    {&__pyx_n_s_NOTAPPLICABLE, __pyx_k_NOTAPPLICABLE, sizeof(__pyx_k_NOTAPPLICABLE), 0, 0, 1, 1},
    {&__pyx_n_s_OPTIMAL, __pyx_k_OPTIMAL, sizeof(__pyx_k_OPTIMAL), 0, 0, 1, 1},
    {&__pyx_n_s_PY_ALL, __pyx_k_PY_ALL, sizeof(__pyx_k_PY_ALL), 0, 0, 1, 1},
    {&__pyx_n_s_PY_BLOCK, __pyx_k_PY_BLOCK, sizeof(__pyx_k_PY_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_PY_BOTH, __pyx_k_PY_BOTH, sizeof(__pyx_k_PY_BOTH), 0, 0, 1, 1},
    {&__pyx_n_s_PY_COMPLETE, __pyx_k_PY_COMPLETE, sizeof(__pyx_k_PY_COMPLETE), 0, 0, 1, 1},
    {&__pyx_n_s_PY_COMPLETED_CONSTOMASTER, __pyx_k_PY_COMPLETED_CONSTOMASTER, sizeof(__pyx_k_PY_COMPLETED_CONSTOMASTER), 0, 0, 1, 1},
    {&__pyx_n_s_PY_CONS_DECOMPINFO, __pyx_k_PY_CONS_DECOMPINFO, sizeof(__pyx_k_PY_CONS_DECOMPINFO), 0, 0, 1, 1},
    {&__pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth, __pyx_k_PY_CONS_DECOMPINFO___reduce_cyth, sizeof(__pyx_k_PY_CONS_DECOMPINFO___reduce_cyth), 0, 0, 1, 1},
    {&__pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy, __pyx_k_PY_CONS_DECOMPINFO___setstate_cy, sizeof(__pyx_k_PY_CONS_DECOMPINFO___setstate_cy), 0, 0, 1, 1},
    {&__pyx_n_s_PY_GCG_PRICINGSTATUS, __pyx_k_PY_GCG_PRICINGSTATUS, sizeof(__pyx_k_PY_GCG_PRICINGSTATUS), 0, 0, 1, 1},
    {&__pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy, __pyx_k_PY_GCG_PRICINGSTATUS___reduce_cy, sizeof(__pyx_k_PY_GCG_PRICINGSTATUS___reduce_cy), 0, 0, 1, 1},
    {&__pyx_n_s_PY_GCG_PRICINGSTATUS___setstate, __pyx_k_PY_GCG_PRICINGSTATUS___setstate, sizeof(__pyx_k_PY_GCG_PRICINGSTATUS___setstate), 0, 0, 1, 1},
    {&__pyx_n_s_PY_LINKING, __pyx_k_PY_LINKING, sizeof(__pyx_k_PY_LINKING), 0, 0, 1, 1},
    {&__pyx_n_s_PY_MASTER, __pyx_k_PY_MASTER, sizeof(__pyx_k_PY_MASTER), 0, 0, 1, 1},
    {&__pyx_n_s_PY_NOT, __pyx_k_PY_NOT, sizeof(__pyx_k_PY_NOT), 0, 0, 1, 1},
    {&__pyx_n_s_PY_ONLY_MASTER, __pyx_k_PY_ONLY_MASTER, sizeof(__pyx_k_PY_ONLY_MASTER), 0, 0, 1, 1},
    {&__pyx_n_s_PY_ONLY_PRICING, __pyx_k_PY_ONLY_PRICING, sizeof(__pyx_k_PY_ONLY_PRICING), 0, 0, 1, 1},
    {&__pyx_n_s_PY_PARTIAL, __pyx_k_PY_PARTIAL, sizeof(__pyx_k_PY_PARTIAL), 0, 0, 1, 1},
    {&__pyx_n_s_PY_SCIP_CALL, __pyx_k_PY_SCIP_CALL, sizeof(__pyx_k_PY_SCIP_CALL), 0, 0, 1, 1},
    {&__pyx_n_s_PY_USERGIVEN, __pyx_k_PY_USERGIVEN, sizeof(__pyx_k_PY_USERGIVEN), 0, 0, 1, 1},
    {&__pyx_n_s_PY_USERGIVEN___reduce_cython, __pyx_k_PY_USERGIVEN___reduce_cython, sizeof(__pyx_k_PY_USERGIVEN___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_PY_USERGIVEN___setstate_cython, __pyx_k_PY_USERGIVEN___setstate_cython, sizeof(__pyx_k_PY_USERGIVEN___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_PY_VAR_DECOMPINFO, __pyx_k_PY_VAR_DECOMPINFO, sizeof(__pyx_k_PY_VAR_DECOMPINFO), 0, 0, 1, 1},
    {&__pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho, __pyx_k_PY_VAR_DECOMPINFO___reduce_cytho, sizeof(__pyx_k_PY_VAR_DECOMPINFO___reduce_cytho), 0, 0, 1, 1},
    {&__pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt, __pyx_k_PY_VAR_DECOMPINFO___setstate_cyt, sizeof(__pyx_k_PY_VAR_DECOMPINFO___setstate_cyt), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition, __pyx_k_PartialDecomposition, sizeof(__pyx_k_PartialDecomposition), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition___copy, __pyx_k_PartialDecomposition___copy, sizeof(__pyx_k_PartialDecomposition___copy), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition___reduce_cy, __pyx_k_PartialDecomposition___reduce_cy, sizeof(__pyx_k_PartialDecomposition___reduce_cy), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition___setstate, __pyx_k_PartialDecomposition___setstate, sizeof(__pyx_k_PartialDecomposition___setstate), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition__repr_png, __pyx_k_PartialDecomposition__repr_png, sizeof(__pyx_k_PartialDecomposition__repr_png), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition__repr_svg, __pyx_k_PartialDecomposition__repr_svg, sizeof(__pyx_k_PartialDecomposition__repr_svg), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addAncestor, __pyx_k_PartialDecomposition_addAncestor, sizeof(__pyx_k_PartialDecomposition_addAncestor), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addBlock, __pyx_k_PartialDecomposition_addBlock, sizeof(__pyx_k_PartialDecomposition_addBlock), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addClockTim, __pyx_k_PartialDecomposition_addClockTim, sizeof(__pyx_k_PartialDecomposition_addClockTim), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addDecChang, __pyx_k_PartialDecomposition_addDecChang, sizeof(__pyx_k_PartialDecomposition_addDecChang), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addDetector, __pyx_k_PartialDecomposition_addDetector, sizeof(__pyx_k_PartialDecomposition_addDetector), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addNNewBloc, __pyx_k_PartialDecomposition_addNNewBloc, sizeof(__pyx_k_PartialDecomposition_addNNewBloc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctConss, __pyx_k_PartialDecomposition_addPctConss, sizeof(__pyx_k_PartialDecomposition_addPctConss), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctConss_2, __pyx_k_PartialDecomposition_addPctConss_2, sizeof(__pyx_k_PartialDecomposition_addPctConss_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctConss_3, __pyx_k_PartialDecomposition_addPctConss_3, sizeof(__pyx_k_PartialDecomposition_addPctConss_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctVarsF, __pyx_k_PartialDecomposition_addPctVarsF, sizeof(__pyx_k_PartialDecomposition_addPctVarsF), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctVarsT, __pyx_k_PartialDecomposition_addPctVarsT, sizeof(__pyx_k_PartialDecomposition_addPctVarsT), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_addPctVarsT_2, __pyx_k_PartialDecomposition_addPctVarsT_2, sizeof(__pyx_k_PartialDecomposition_addPctVarsT_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_aggInfoCalc, __pyx_k_PartialDecomposition_aggInfoCalc, sizeof(__pyx_k_PartialDecomposition_aggInfoCalc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_alreadyAssi, __pyx_k_PartialDecomposition_alreadyAssi, sizeof(__pyx_k_PartialDecomposition_alreadyAssi), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_assignCurre, __pyx_k_PartialDecomposition_assignCurre, sizeof(__pyx_k_PartialDecomposition_assignCurre), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_assignOpenC, __pyx_k_PartialDecomposition_assignOpenC, sizeof(__pyx_k_PartialDecomposition_assignOpenC), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_assignSmall, __pyx_k_PartialDecomposition_assignSmall, sizeof(__pyx_k_PartialDecomposition_assignSmall), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_buildDecCha, __pyx_k_PartialDecomposition_buildDecCha, sizeof(__pyx_k_PartialDecomposition_buildDecCha), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_calcAggrega, __pyx_k_PartialDecomposition_calcAggrega, sizeof(__pyx_k_PartialDecomposition_calcAggrega), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_calcStairli, __pyx_k_PartialDecomposition_calcStairli, sizeof(__pyx_k_PartialDecomposition_calcStairli), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_checkAllCon, __pyx_k_PartialDecomposition_checkAllCon, sizeof(__pyx_k_PartialDecomposition_checkAllCon), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_checkConsis, __pyx_k_PartialDecomposition_checkConsis, sizeof(__pyx_k_PartialDecomposition_checkConsis), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_complete, __pyx_k_PartialDecomposition_complete, sizeof(__pyx_k_PartialDecomposition_complete), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_completeByC, __pyx_k_PartialDecomposition_completeByC, sizeof(__pyx_k_PartialDecomposition_completeByC), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_completeByC_2, __pyx_k_PartialDecomposition_completeByC_2, sizeof(__pyx_k_PartialDecomposition_completeByC_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_completeGre, __pyx_k_PartialDecomposition_completeGre, sizeof(__pyx_k_PartialDecomposition_completeGre), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_considerImp, __pyx_k_PartialDecomposition_considerImp, sizeof(__pyx_k_PartialDecomposition_considerImp), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_copy, __pyx_k_PartialDecomposition_copy, sizeof(__pyx_k_PartialDecomposition_copy), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_copyPartiti, __pyx_k_PartialDecomposition_copyPartiti, sizeof(__pyx_k_PartialDecomposition_copyPartiti), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_deleteEmpty, __pyx_k_PartialDecomposition_deleteEmpty, sizeof(__pyx_k_PartialDecomposition_deleteEmpty), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_deleteOpenc, __pyx_k_PartialDecomposition_deleteOpenc, sizeof(__pyx_k_PartialDecomposition_deleteOpenc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_deleteOpenv, __pyx_k_PartialDecomposition_deleteOpenv, sizeof(__pyx_k_PartialDecomposition_deleteOpenv), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_displayInfo, __pyx_k_PartialDecomposition_displayInfo, sizeof(__pyx_k_PartialDecomposition_displayInfo), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_findVarsLin, __pyx_k_PartialDecomposition_findVarsLin, sizeof(__pyx_k_PartialDecomposition_findVarsLin), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_findVarsLin_2, __pyx_k_PartialDecomposition_findVarsLin_2, sizeof(__pyx_k_PartialDecomposition_findVarsLin_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConsToBl, __pyx_k_PartialDecomposition_fixConsToBl, sizeof(__pyx_k_PartialDecomposition_fixConsToBl), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConsToBl_2, __pyx_k_PartialDecomposition_fixConsToBl_2, sizeof(__pyx_k_PartialDecomposition_fixConsToBl_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConsToMa, __pyx_k_PartialDecomposition_fixConsToMa, sizeof(__pyx_k_PartialDecomposition_fixConsToMa), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConssToB, __pyx_k_PartialDecomposition_fixConssToB, sizeof(__pyx_k_PartialDecomposition_fixConssToB), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConssToB_2, __pyx_k_PartialDecomposition_fixConssToB_2, sizeof(__pyx_k_PartialDecomposition_fixConssToB_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixConssToM, __pyx_k_PartialDecomposition_fixConssToM, sizeof(__pyx_k_PartialDecomposition_fixConssToM), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixVarToLin, __pyx_k_PartialDecomposition_fixVarToLin, sizeof(__pyx_k_PartialDecomposition_fixVarToLin), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixVarToMas, __pyx_k_PartialDecomposition_fixVarToMas, sizeof(__pyx_k_PartialDecomposition_fixVarToMas), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_fixVarToSta, __pyx_k_PartialDecomposition_fixVarToSta, sizeof(__pyx_k_PartialDecomposition_fixVarToSta), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getAncestor, __pyx_k_PartialDecomposition_getAncestor, sizeof(__pyx_k_PartialDecomposition_getAncestor), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getAncestor_2, __pyx_k_PartialDecomposition_getAncestor_2, sizeof(__pyx_k_PartialDecomposition_getAncestor_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getBlocksFo, __pyx_k_PartialDecomposition_getBlocksFo, sizeof(__pyx_k_PartialDecomposition_getBlocksFo), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getConssFor, __pyx_k_PartialDecomposition_getConssFor, sizeof(__pyx_k_PartialDecomposition_getConssFor), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getConssFor_2, __pyx_k_PartialDecomposition_getConssFor_2, sizeof(__pyx_k_PartialDecomposition_getConssFor_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getDetector, __pyx_k_PartialDecomposition_getDetector, sizeof(__pyx_k_PartialDecomposition_getDetector), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getDetector_2, __pyx_k_PartialDecomposition_getDetector_2, sizeof(__pyx_k_PartialDecomposition_getDetector_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getDetector_3, __pyx_k_PartialDecomposition_getDetector_3, sizeof(__pyx_k_PartialDecomposition_getDetector_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getDetprobd, __pyx_k_PartialDecomposition_getDetprobd, sizeof(__pyx_k_PartialDecomposition_getDetprobd), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getFinished, __pyx_k_PartialDecomposition_getFinished, sizeof(__pyx_k_PartialDecomposition_getFinished), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getHashValu, __pyx_k_PartialDecomposition_getHashValu, sizeof(__pyx_k_PartialDecomposition_getHashValu), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getID, __pyx_k_PartialDecomposition_getID, sizeof(__pyx_k_PartialDecomposition_getID), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getLinkingv, __pyx_k_PartialDecomposition_getLinkingv, sizeof(__pyx_k_PartialDecomposition_getLinkingv), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getMasterco, __pyx_k_PartialDecomposition_getMasterco, sizeof(__pyx_k_PartialDecomposition_getMasterco), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getMasterva, __pyx_k_PartialDecomposition_getMasterva, sizeof(__pyx_k_PartialDecomposition_getMasterva), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNAncesto, __pyx_k_PartialDecomposition_getNAncesto, sizeof(__pyx_k_PartialDecomposition_getNAncesto), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNBlocks, __pyx_k_PartialDecomposition_getNBlocks, sizeof(__pyx_k_PartialDecomposition_getNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNCoeffsF, __pyx_k_PartialDecomposition_getNCoeffsF, sizeof(__pyx_k_PartialDecomposition_getNCoeffsF), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNCoeffsF_2, __pyx_k_PartialDecomposition_getNCoeffsF_2, sizeof(__pyx_k_PartialDecomposition_getNCoeffsF_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNConss, __pyx_k_PartialDecomposition_getNConss, sizeof(__pyx_k_PartialDecomposition_getNConss), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNConssFo, __pyx_k_PartialDecomposition_getNConssFo, sizeof(__pyx_k_PartialDecomposition_getNConssFo), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNDetecto, __pyx_k_PartialDecomposition_getNDetecto, sizeof(__pyx_k_PartialDecomposition_getNDetecto), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNLinking, __pyx_k_PartialDecomposition_getNLinking, sizeof(__pyx_k_PartialDecomposition_getNLinking), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNMasterc, __pyx_k_PartialDecomposition_getNMasterc, sizeof(__pyx_k_PartialDecomposition_getNMasterc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNMasterv, __pyx_k_PartialDecomposition_getNMasterv, sizeof(__pyx_k_PartialDecomposition_getNMasterv), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNNewBloc, __pyx_k_PartialDecomposition_getNNewBloc, sizeof(__pyx_k_PartialDecomposition_getNNewBloc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNNewBloc_2, __pyx_k_PartialDecomposition_getNNewBloc_2, sizeof(__pyx_k_PartialDecomposition_getNNewBloc_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNOpencon, __pyx_k_PartialDecomposition_getNOpencon, sizeof(__pyx_k_PartialDecomposition_getNOpencon), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNOpenvar, __pyx_k_PartialDecomposition_getNOpenvar, sizeof(__pyx_k_PartialDecomposition_getNOpenvar), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNReps, __pyx_k_PartialDecomposition_getNReps, sizeof(__pyx_k_PartialDecomposition_getNReps), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNStairli, __pyx_k_PartialDecomposition_getNStairli, sizeof(__pyx_k_PartialDecomposition_getNStairli), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNTotalSt, __pyx_k_PartialDecomposition_getNTotalSt, sizeof(__pyx_k_PartialDecomposition_getNTotalSt), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNVars, __pyx_k_PartialDecomposition_getNVars, sizeof(__pyx_k_PartialDecomposition_getNVars), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNVarsFor, __pyx_k_PartialDecomposition_getNVarsFor, sizeof(__pyx_k_PartialDecomposition_getNVarsFor), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getNVarsFor_2, __pyx_k_PartialDecomposition_getNVarsFor_2, sizeof(__pyx_k_PartialDecomposition_getNVarsFor_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getOpencons, __pyx_k_PartialDecomposition_getOpencons, sizeof(__pyx_k_PartialDecomposition_getOpencons), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getOpenvars, __pyx_k_PartialDecomposition_getOpenvars, sizeof(__pyx_k_PartialDecomposition_getOpenvars), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss, __pyx_k_PartialDecomposition_getPctConss, sizeof(__pyx_k_PartialDecomposition_getPctConss), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss_2, __pyx_k_PartialDecomposition_getPctConss_2, sizeof(__pyx_k_PartialDecomposition_getPctConss_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss_3, __pyx_k_PartialDecomposition_getPctConss_3, sizeof(__pyx_k_PartialDecomposition_getPctConss_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss_4, __pyx_k_PartialDecomposition_getPctConss_4, sizeof(__pyx_k_PartialDecomposition_getPctConss_4), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss_5, __pyx_k_PartialDecomposition_getPctConss_5, sizeof(__pyx_k_PartialDecomposition_getPctConss_5), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctConss_6, __pyx_k_PartialDecomposition_getPctConss_6, sizeof(__pyx_k_PartialDecomposition_getPctConss_6), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsF, __pyx_k_PartialDecomposition_getPctVarsF, sizeof(__pyx_k_PartialDecomposition_getPctVarsF), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsF_2, __pyx_k_PartialDecomposition_getPctVarsF_2, sizeof(__pyx_k_PartialDecomposition_getPctVarsF_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsT, __pyx_k_PartialDecomposition_getPctVarsT, sizeof(__pyx_k_PartialDecomposition_getPctVarsT), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsT_2, __pyx_k_PartialDecomposition_getPctVarsT_2, sizeof(__pyx_k_PartialDecomposition_getPctVarsT_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsT_3, __pyx_k_PartialDecomposition_getPctVarsT_3, sizeof(__pyx_k_PartialDecomposition_getPctVarsT_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getPctVarsT_4, __pyx_k_PartialDecomposition_getPctVarsT_4, sizeof(__pyx_k_PartialDecomposition_getPctVarsT_4), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getRepForBl, __pyx_k_PartialDecomposition_getRepForBl, sizeof(__pyx_k_PartialDecomposition_getRepForBl), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getRepVarma, __pyx_k_PartialDecomposition_getRepVarma, sizeof(__pyx_k_PartialDecomposition_getRepVarma), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getScore, __pyx_k_PartialDecomposition_getScore, sizeof(__pyx_k_PartialDecomposition_getScore), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getTranslat, __pyx_k_PartialDecomposition_getTranslat, sizeof(__pyx_k_PartialDecomposition_getTranslat), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getUsergive, __pyx_k_PartialDecomposition_getUsergive, sizeof(__pyx_k_PartialDecomposition_getUsergive), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getVarProbi, __pyx_k_PartialDecomposition_getVarProbi, sizeof(__pyx_k_PartialDecomposition_getVarProbi), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_getVarsForB, __pyx_k_PartialDecomposition_getVarsForB, sizeof(__pyx_k_PartialDecomposition_getVarsForB), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_hasSetppMas, __pyx_k_PartialDecomposition_hasSetppMas, sizeof(__pyx_k_PartialDecomposition_hasSetppMas), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_hasSetppcMa, __pyx_k_PartialDecomposition_hasSetppcMa, sizeof(__pyx_k_PartialDecomposition_hasSetppcMa), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_hasSetppcca, __pyx_k_PartialDecomposition_hasSetppcca, sizeof(__pyx_k_PartialDecomposition_hasSetppcca), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isAssignedT, __pyx_k_PartialDecomposition_isAssignedT, sizeof(__pyx_k_PartialDecomposition_isAssignedT), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isComplete, __pyx_k_PartialDecomposition_isComplete, sizeof(__pyx_k_PartialDecomposition_isComplete), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isConsMaste, __pyx_k_PartialDecomposition_isConsMaste, sizeof(__pyx_k_PartialDecomposition_isConsMaste), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isConsOpenc, __pyx_k_PartialDecomposition_isConsOpenc, sizeof(__pyx_k_PartialDecomposition_isConsOpenc), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isTrivial, __pyx_k_PartialDecomposition_isTrivial, sizeof(__pyx_k_PartialDecomposition_isTrivial), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarBlockv, __pyx_k_PartialDecomposition_isVarBlockv, sizeof(__pyx_k_PartialDecomposition_isVarBlockv), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarLinkin, __pyx_k_PartialDecomposition_isVarLinkin, sizeof(__pyx_k_PartialDecomposition_isVarLinkin), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarMaster, __pyx_k_PartialDecomposition_isVarMaster, sizeof(__pyx_k_PartialDecomposition_isVarMaster), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarOpenva, __pyx_k_PartialDecomposition_isVarOpenva, sizeof(__pyx_k_PartialDecomposition_isVarOpenva), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarStairl, __pyx_k_PartialDecomposition_isVarStairl, sizeof(__pyx_k_PartialDecomposition_isVarStairl), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_isVarStairl_2, __pyx_k_PartialDecomposition_isVarStairl_2, sizeof(__pyx_k_PartialDecomposition_isVarStairl_2), 0, 0, 1, 1},
    {&__pyx_kp_u_PartialDecomposition_nBlocks, __pyx_k_PartialDecomposition_nBlocks, sizeof(__pyx_k_PartialDecomposition_nBlocks), 0, 1, 0, 0},
    {&__pyx_n_s_PartialDecomposition_prepare, __pyx_k_PartialDecomposition_prepare, sizeof(__pyx_k_PartialDecomposition_prepare), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_refineToBlo, __pyx_k_PartialDecomposition_refineToBlo, sizeof(__pyx_k_PartialDecomposition_refineToBlo), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_refineToMas, __pyx_k_PartialDecomposition_refineToMas, sizeof(__pyx_k_PartialDecomposition_refineToMas), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_removeAnces, __pyx_k_PartialDecomposition_removeAnces, sizeof(__pyx_k_PartialDecomposition_removeAnces), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_removeMaste, __pyx_k_PartialDecomposition_removeMaste, sizeof(__pyx_k_PartialDecomposition_removeMaste), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setAncestor, __pyx_k_PartialDecomposition_setAncestor, sizeof(__pyx_k_PartialDecomposition_setAncestor), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setConsPart, __pyx_k_PartialDecomposition_setConsPart, sizeof(__pyx_k_PartialDecomposition_setConsPart), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setConsToMa, __pyx_k_PartialDecomposition_setConsToMa, sizeof(__pyx_k_PartialDecomposition_setConsToMa), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setDetector, __pyx_k_PartialDecomposition_setDetector, sizeof(__pyx_k_PartialDecomposition_setDetector), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setDetector_2, __pyx_k_PartialDecomposition_setDetector_2, sizeof(__pyx_k_PartialDecomposition_setDetector_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setDetector_3, __pyx_k_PartialDecomposition_setDetector_3, sizeof(__pyx_k_PartialDecomposition_setDetector_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setDetector_4, __pyx_k_PartialDecomposition_setDetector_4, sizeof(__pyx_k_PartialDecomposition_setDetector_4), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setFinished, __pyx_k_PartialDecomposition_setFinished, sizeof(__pyx_k_PartialDecomposition_setFinished), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setFinished_2, __pyx_k_PartialDecomposition_setFinished_2, sizeof(__pyx_k_PartialDecomposition_setFinished_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setNBlocks, __pyx_k_PartialDecomposition_setNBlocks, sizeof(__pyx_k_PartialDecomposition_setNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctConss, __pyx_k_PartialDecomposition_setPctConss, sizeof(__pyx_k_PartialDecomposition_setPctConss), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctConss_2, __pyx_k_PartialDecomposition_setPctConss_2, sizeof(__pyx_k_PartialDecomposition_setPctConss_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctConss_3, __pyx_k_PartialDecomposition_setPctConss_3, sizeof(__pyx_k_PartialDecomposition_setPctConss_3), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctVarsF, __pyx_k_PartialDecomposition_setPctVarsF, sizeof(__pyx_k_PartialDecomposition_setPctVarsF), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctVarsT, __pyx_k_PartialDecomposition_setPctVarsT, sizeof(__pyx_k_PartialDecomposition_setPctVarsT), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setPctVarsT_2, __pyx_k_PartialDecomposition_setPctVarsT_2, sizeof(__pyx_k_PartialDecomposition_setPctVarsT_2), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setStemsFro, __pyx_k_PartialDecomposition_setStemsFro, sizeof(__pyx_k_PartialDecomposition_setStemsFro), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setTranslat, __pyx_k_PartialDecomposition_setTranslat, sizeof(__pyx_k_PartialDecomposition_setTranslat), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setUsergive, __pyx_k_PartialDecomposition_setUsergive, sizeof(__pyx_k_PartialDecomposition_setUsergive), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setVarParti, __pyx_k_PartialDecomposition_setVarParti, sizeof(__pyx_k_PartialDecomposition_setVarParti), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setVarToBlo, __pyx_k_PartialDecomposition_setVarToBlo, sizeof(__pyx_k_PartialDecomposition_setVarToBlo), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setVarToLin, __pyx_k_PartialDecomposition_setVarToLin, sizeof(__pyx_k_PartialDecomposition_setVarToLin), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setVarToMas, __pyx_k_PartialDecomposition_setVarToMas, sizeof(__pyx_k_PartialDecomposition_setVarToMas), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_setVarToSta, __pyx_k_PartialDecomposition_setVarToSta, sizeof(__pyx_k_PartialDecomposition_setVarToSta), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_shouldCompl, __pyx_k_PartialDecomposition_shouldCompl, sizeof(__pyx_k_PartialDecomposition_shouldCompl), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_showVisuali, __pyx_k_PartialDecomposition_showVisuali, sizeof(__pyx_k_PartialDecomposition_showVisuali), 0, 0, 1, 1},
    {&__pyx_n_s_PartialDecomposition_sort, __pyx_k_PartialDecomposition_sort, sizeof(__pyx_k_PartialDecomposition_sort), 0, 0, 1, 1},
    {&__pyx_n_s_Path, __pyx_k_Path, sizeof(__pyx_k_Path), 0, 0, 1, 1},
    {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver, __pyx_k_PricingSolver, sizeof(__pyx_k_PricingSolver), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver___reduce_cython, __pyx_k_PricingSolver___reduce_cython, sizeof(__pyx_k_PricingSolver___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver___setstate_cython, __pyx_k_PricingSolver___setstate_cython, sizeof(__pyx_k_PricingSolver___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_exitSolution, __pyx_k_PricingSolver_exitSolution, sizeof(__pyx_k_PricingSolver_exitSolution), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_exitSolver, __pyx_k_PricingSolver_exitSolver, sizeof(__pyx_k_PricingSolver_exitSolver), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_freeSolver, __pyx_k_PricingSolver_freeSolver, sizeof(__pyx_k_PricingSolver_freeSolver), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_initSolution, __pyx_k_PricingSolver_initSolution, sizeof(__pyx_k_PricingSolver_initSolution), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_initSolver, __pyx_k_PricingSolver_initSolver, sizeof(__pyx_k_PricingSolver_initSolver), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_solve, __pyx_k_PricingSolver_solve, sizeof(__pyx_k_PricingSolver_solve), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_solveHeuristic, __pyx_k_PricingSolver_solveHeuristic, sizeof(__pyx_k_PricingSolver_solveHeuristic), 0, 0, 1, 1},
    {&__pyx_n_s_PricingSolver_updateSolver, __pyx_k_PricingSolver_updateSolver, sizeof(__pyx_k_PricingSolver_updateSolver), 0, 0, 1, 1},
    {&__pyx_n_s_SOLVERLIMIT, __pyx_k_SOLVERLIMIT, sizeof(__pyx_k_SOLVERLIMIT), 0, 0, 1, 1},
    {&__pyx_n_s_Score, __pyx_k_Score, sizeof(__pyx_k_Score), 0, 0, 1, 1},
    {&__pyx_n_s_Score___reduce_cython, __pyx_k_Score___reduce_cython, sizeof(__pyx_k_Score___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Score___setstate_cython, __pyx_k_Score___setstate_cython, sizeof(__pyx_k_Score___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Score_scorecalculate, __pyx_k_Score_scorecalculate, sizeof(__pyx_k_Score_scorecalculate), 0, 0, 1, 1},
    {&__pyx_n_s_Score_scorefree, __pyx_k_Score_scorefree, sizeof(__pyx_k_Score_scorefree), 0, 0, 1, 1},
    {&__pyx_n_s_TemporaryDirectory, __pyx_k_TemporaryDirectory, sizeof(__pyx_k_TemporaryDirectory), 0, 0, 1, 1},
    {&__pyx_kp_u_The_value_of_the_key_newpartiald, __pyx_k_The_value_of_the_key_newpartiald, sizeof(__pyx_k_The_value_of_the_key_newpartiald), 0, 1, 0, 0},
    {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
    {&__pyx_n_s_UNBOUNDED, __pyx_k_UNBOUNDED, sizeof(__pyx_k_UNBOUNDED), 0, 0, 1, 1},
    {&__pyx_n_s_UNKNOWN, __pyx_k_UNKNOWN, sizeof(__pyx_k_UNKNOWN), 0, 0, 1, 1},
    {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
    {&__pyx_n_s_VarClassifier, __pyx_k_VarClassifier, sizeof(__pyx_k_VarClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_VarClassifier___reduce_cython, __pyx_k_VarClassifier___reduce_cython, sizeof(__pyx_k_VarClassifier___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_VarClassifier___setstate_cython, __pyx_k_VarClassifier___setstate_cython, sizeof(__pyx_k_VarClassifier___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_VarClassifier_classify, __pyx_k_VarClassifier_classify, sizeof(__pyx_k_VarClassifier_classify), 0, 0, 1, 1},
    {&__pyx_n_s_VarClassifier_freeVarClassifier, __pyx_k_VarClassifier_freeVarClassifier, sizeof(__pyx_k_VarClassifier_freeVarClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart, __pyx_k_VarPart, sizeof(__pyx_k_VarPart), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart___reduce_cython, __pyx_k_VarPart___reduce_cython, sizeof(__pyx_k_VarPart___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart___setstate_cython, __pyx_k_VarPart___setstate_cython, sizeof(__pyx_k_VarPart___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_addClass, __pyx_k_VarPart_addClass, sizeof(__pyx_k_VarPart_addClass), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_assignVarToClass, __pyx_k_VarPart_assignVarToClass, sizeof(__pyx_k_VarPart_assignVarToClass), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getAllSubsets, __pyx_k_VarPart_getAllSubsets, sizeof(__pyx_k_VarPart_getAllSubsets), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getClassDecompInfo, __pyx_k_VarPart_getClassDecompInfo, sizeof(__pyx_k_VarPart_getClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getClassDescription, __pyx_k_VarPart_getClassDescription, sizeof(__pyx_k_VarPart_getClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getClassName, __pyx_k_VarPart_getClassName, sizeof(__pyx_k_VarPart_getClassName), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getClassNameOfVar, __pyx_k_VarPart_getClassNameOfVar, sizeof(__pyx_k_VarPart_getClassNameOfVar), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getClassOfVar, __pyx_k_VarPart_getClassOfVar, sizeof(__pyx_k_VarPart_getClassOfVar), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getNClasses, __pyx_k_VarPart_getNClasses, sizeof(__pyx_k_VarPart_getNClasses), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getNVars, __pyx_k_VarPart_getNVars, sizeof(__pyx_k_VarPart_getNVars), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getNVarsOfClasses, __pyx_k_VarPart_getNVarsOfClasses, sizeof(__pyx_k_VarPart_getNVarsOfClasses), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_getName, __pyx_k_VarPart_getName, sizeof(__pyx_k_VarPart_getName), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_isVarClassified, __pyx_k_VarPart_isVarClassified, sizeof(__pyx_k_VarPart_isVarClassified), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_reduceClasses, __pyx_k_VarPart_reduceClasses, sizeof(__pyx_k_VarPart_reduceClasses), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_removeEmptyClasses, __pyx_k_VarPart_removeEmptyClasses, sizeof(__pyx_k_VarPart_removeEmptyClasses), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_setClassDecompInfo, __pyx_k_VarPart_setClassDecompInfo, sizeof(__pyx_k_VarPart_setClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_setClassDescription, __pyx_k_VarPart_setClassDescription, sizeof(__pyx_k_VarPart_setClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_VarPart_setClassName, __pyx_k_VarPart_setClassName, sizeof(__pyx_k_VarPart_setClassName), 0, 0, 1, 1},
    {&__pyx_kp_u_Varclassifier_0_yields_a_classif, __pyx_k_Varclassifier_0_yields_a_classif, sizeof(__pyx_k_Varclassifier_0_yields_a_classif), 0, 1, 0, 0},
    {&__pyx_n_s_Warning, __pyx_k_Warning, sizeof(__pyx_k_Warning), 0, 0, 1, 1},
    {&__pyx_n_s__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 0, 1, 1},
    {&__pyx_n_s__515, __pyx_k__515, sizeof(__pyx_k__515), 0, 0, 1, 1},
    {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0},
    {&__pyx_kp_u__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0, 0},
    {&__pyx_n_s_addAncestorID, __pyx_k_addAncestorID, sizeof(__pyx_k_addAncestorID), 0, 0, 1, 1},
    {&__pyx_n_s_addBlock, __pyx_k_addBlock, sizeof(__pyx_k_addBlock), 0, 0, 1, 1},
    {&__pyx_n_s_addCandidatesNBlocksNVotes, __pyx_k_addCandidatesNBlocksNVotes, sizeof(__pyx_k_addCandidatesNBlocksNVotes), 0, 0, 1, 1},
    {&__pyx_n_s_addClass, __pyx_k_addClass, sizeof(__pyx_k_addClass), 0, 0, 1, 1},
    {&__pyx_n_s_addClockTime, __pyx_k_addClockTime, sizeof(__pyx_k_addClockTime), 0, 0, 1, 1},
    {&__pyx_n_s_addCol, __pyx_k_addCol, sizeof(__pyx_k_addCol), 0, 0, 1, 1},
    {&__pyx_n_s_addConsPartition, __pyx_k_addConsPartition, sizeof(__pyx_k_addConsPartition), 0, 0, 1, 1},
    {&__pyx_n_s_addDecChangesFromAncestor, __pyx_k_addDecChangesFromAncestor, sizeof(__pyx_k_addDecChangesFromAncestor), 0, 0, 1, 1},
    {&__pyx_n_s_addDecomposition, __pyx_k_addDecomposition, sizeof(__pyx_k_addDecomposition), 0, 0, 1, 1},
    {&__pyx_n_s_addDecompositionFromConss, __pyx_k_addDecompositionFromConss, sizeof(__pyx_k_addDecompositionFromConss), 0, 0, 1, 1},
    {&__pyx_n_s_addDetectorChainInfo, __pyx_k_addDetectorChainInfo, sizeof(__pyx_k_addDetectorChainInfo), 0, 0, 1, 1},
    {&__pyx_n_s_addNNewBlocks, __pyx_k_addNNewBlocks, sizeof(__pyx_k_addNNewBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_addPartialdecToAncestor, __pyx_k_addPartialdecToAncestor, sizeof(__pyx_k_addPartialdecToAncestor), 0, 0, 1, 1},
    {&__pyx_n_s_addPartialdecToFinished, __pyx_k_addPartialdecToFinished, sizeof(__pyx_k_addPartialdecToFinished), 0, 0, 1, 1},
    {&__pyx_n_s_addPartialdecToFinishedUnchecked, __pyx_k_addPartialdecToFinishedUnchecked, sizeof(__pyx_k_addPartialdecToFinishedUnchecked), 0, 0, 1, 1},
    {&__pyx_n_s_addPartialdecToOpen, __pyx_k_addPartialdecToOpen, sizeof(__pyx_k_addPartialdecToOpen), 0, 0, 1, 1},
    {&__pyx_n_s_addPctConssFromFree, __pyx_k_addPctConssFromFree, sizeof(__pyx_k_addPctConssFromFree), 0, 0, 1, 1},
    {&__pyx_n_s_addPctConssToBlock, __pyx_k_addPctConssToBlock, sizeof(__pyx_k_addPctConssToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_addPctConssToBorder, __pyx_k_addPctConssToBorder, sizeof(__pyx_k_addPctConssToBorder), 0, 0, 1, 1},
    {&__pyx_n_s_addPctVarsFromFree, __pyx_k_addPctVarsFromFree, sizeof(__pyx_k_addPctVarsFromFree), 0, 0, 1, 1},
    {&__pyx_n_s_addPctVarsToBlock, __pyx_k_addPctVarsToBlock, sizeof(__pyx_k_addPctVarsToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_addPctVarsToBorder, __pyx_k_addPctVarsToBorder, sizeof(__pyx_k_addPctVarsToBorder), 0, 0, 1, 1},
    {&__pyx_n_s_addPreexistingPartialDecompositi, __pyx_k_addPreexistingPartialDecompositi, sizeof(__pyx_k_addPreexistingPartialDecompositi), 0, 0, 1, 1},
    {&__pyx_n_s_addVar, __pyx_k_addVar, sizeof(__pyx_k_addVar), 0, 0, 1, 1},
    {&__pyx_n_s_addVarPartition, __pyx_k_addVarPartition, sizeof(__pyx_k_addVarPartition), 0, 0, 1, 1},
    {&__pyx_n_s_aggInfoCalculated, __pyx_k_aggInfoCalculated, sizeof(__pyx_k_aggInfoCalculated), 0, 0, 1, 1},
    {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
    {&__pyx_kp_u_alldecompositions, __pyx_k_alldecompositions, sizeof(__pyx_k_alldecompositions), 0, 1, 0, 0},
    {&__pyx_n_s_alreadyAssignedConssToBlocks, __pyx_k_alreadyAssignedConssToBlocks, sizeof(__pyx_k_alreadyAssignedConssToBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_ancestor, __pyx_k_ancestor, sizeof(__pyx_k_ancestor), 0, 0, 1, 1},
    {&__pyx_n_s_ancestor_id, __pyx_k_ancestor_id, sizeof(__pyx_k_ancestor_id), 0, 0, 1, 1},
    {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
    {&__pyx_n_s_assignConsToClass, __pyx_k_assignConsToClass, sizeof(__pyx_k_assignConsToClass), 0, 0, 1, 1},
    {&__pyx_n_s_assignCurrentStairlinking, __pyx_k_assignCurrentStairlinking, sizeof(__pyx_k_assignCurrentStairlinking), 0, 0, 1, 1},
    {&__pyx_n_s_assignOpenConssToMaster, __pyx_k_assignOpenConssToMaster, sizeof(__pyx_k_assignOpenConssToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_assignSmallestComponentsButOneCo, __pyx_k_assignSmallestComponentsButOneCo, sizeof(__pyx_k_assignSmallestComponentsButOneCo), 0, 0, 1, 1},
    {&__pyx_n_s_assignVarToClass, __pyx_k_assignVarToClass, sizeof(__pyx_k_assignVarToClass), 0, 0, 1, 1},
    {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
    {&__pyx_n_s_block, __pyx_k_block, sizeof(__pyx_k_block), 0, 0, 1, 1},
    {&__pyx_n_s_block1_id, __pyx_k_block1_id, sizeof(__pyx_k_block1_id), 0, 0, 1, 1},
    {&__pyx_n_s_block2_id, __pyx_k_block2_id, sizeof(__pyx_k_block2_id), 0, 0, 1, 1},
    {&__pyx_n_s_block_conss, __pyx_k_block_conss, sizeof(__pyx_k_block_conss), 0, 0, 1, 1},
    {&__pyx_n_s_block_id, __pyx_k_block_id, sizeof(__pyx_k_block_id), 0, 0, 1, 1},
    {&__pyx_n_s_blockrepid, __pyx_k_blockrepid, sizeof(__pyx_k_blockrepid), 0, 0, 1, 1},
    {&__pyx_kp_u_border_area, __pyx_k_border_area, sizeof(__pyx_k_border_area), 0, 1, 0, 0},
    {&__pyx_n_s_both, __pyx_k_both, sizeof(__pyx_k_both), 0, 0, 1, 1},
    {&__pyx_n_s_buffer, __pyx_k_buffer, sizeof(__pyx_k_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_buildDecChainString, __pyx_k_buildDecChainString, sizeof(__pyx_k_buildDecChainString), 0, 0, 1, 1},
    {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
    {&__pyx_n_s_c_buffer, __pyx_k_c_buffer, sizeof(__pyx_k_c_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_c_consclassifiername, __pyx_k_c_consclassifiername, sizeof(__pyx_k_c_consclassifiername), 0, 0, 1, 1},
    {&__pyx_n_s_c_decchar, __pyx_k_c_decchar, sizeof(__pyx_k_c_decchar), 0, 0, 1, 1},
    {&__pyx_n_s_c_decinfo, __pyx_k_c_decinfo, sizeof(__pyx_k_c_decinfo), 0, 0, 1, 1},
    {&__pyx_n_s_c_desc, __pyx_k_c_desc, sizeof(__pyx_k_c_desc), 0, 0, 1, 1},
    {&__pyx_n_s_c_detectorname, __pyx_k_c_detectorname, sizeof(__pyx_k_c_detectorname), 0, 0, 1, 1},
    {&__pyx_n_s_c_directory, __pyx_k_c_directory, sizeof(__pyx_k_c_directory), 0, 0, 1, 1},
    {&__pyx_n_s_c_extension, __pyx_k_c_extension, sizeof(__pyx_k_c_extension), 0, 0, 1, 1},
    {&__pyx_n_s_c_name, __pyx_k_c_name, sizeof(__pyx_k_c_name), 0, 0, 1, 1},
    {&__pyx_n_s_c_scorename, __pyx_k_c_scorename, sizeof(__pyx_k_c_scorename), 0, 0, 1, 1},
    {&__pyx_n_s_c_shortname, __pyx_k_c_shortname, sizeof(__pyx_k_c_shortname), 0, 0, 1, 1},
    {&__pyx_n_s_c_solvername, __pyx_k_c_solvername, sizeof(__pyx_k_c_solvername), 0, 0, 1, 1},
    {&__pyx_n_s_c_vals, __pyx_k_c_vals, sizeof(__pyx_k_c_vals), 0, 0, 1, 1},
    {&__pyx_n_s_c_varclassifiername, __pyx_k_c_varclassifiername, sizeof(__pyx_k_c_varclassifiername), 0, 0, 1, 1},
    {&__pyx_n_s_c_vars, __pyx_k_c_vars, sizeof(__pyx_k_c_vars), 0, 0, 1, 1},
    {&__pyx_n_s_calcAggregationInformation, __pyx_k_calcAggregationInformation, sizeof(__pyx_k_calcAggregationInformation), 0, 0, 1, 1},
    {&__pyx_n_s_calcStairlinkingVars, __pyx_k_calcStairlinkingVars, sizeof(__pyx_k_calcStairlinkingVars), 0, 0, 1, 1},
    {&__pyx_n_s_candidate, __pyx_k_candidate, sizeof(__pyx_k_candidate), 0, 0, 1, 1},
    {&__pyx_n_s_candidates, __pyx_k_candidates, sizeof(__pyx_k_candidates), 0, 0, 1, 1},
    {&__pyx_n_s_candidatesNBlocks, __pyx_k_candidatesNBlocks, sizeof(__pyx_k_candidatesNBlocks), 0, 0, 1, 1},
    {&__pyx_kp_u_cannot_create_Column_with_GCG_CO, __pyx_k_cannot_create_Column_with_GCG_CO, sizeof(__pyx_k_cannot_create_Column_with_GCG_CO), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_create_ConsPart_with_Cons, __pyx_k_cannot_create_ConsPart_with_Cons, sizeof(__pyx_k_cannot_create_ConsPart_with_Cons), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_create_DetProbData_with_D, __pyx_k_cannot_create_DetProbData_with_D, sizeof(__pyx_k_cannot_create_DetProbData_with_D), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_create_Model_with_SCIP_NU, __pyx_k_cannot_create_Model_with_SCIP_NU, sizeof(__pyx_k_cannot_create_Model_with_SCIP_NU), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_create_PartialDecompositi, __pyx_k_cannot_create_PartialDecompositi, sizeof(__pyx_k_cannot_create_PartialDecompositi), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_create_VarPart_with_VarPa, __pyx_k_cannot_create_VarPart_with_VarPa, sizeof(__pyx_k_cannot_create_VarPart_with_VarPa), 0, 1, 0, 0},
    {&__pyx_n_s_checkAllConssAssigned, __pyx_k_checkAllConssAssigned, sizeof(__pyx_k_checkAllConssAssigned), 0, 0, 1, 1},
    {&__pyx_n_s_checkConsistency, __pyx_k_checkConsistency, sizeof(__pyx_k_checkConsistency), 0, 0, 1, 1},
    {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
    {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1},
    {&__pyx_n_u_classic, __pyx_k_classic, sizeof(__pyx_k_classic), 0, 1, 0, 1},
    {&__pyx_n_s_classificationtime, __pyx_k_classificationtime, sizeof(__pyx_k_classificationtime), 0, 0, 1, 1},
    {&__pyx_n_s_classify, __pyx_k_classify, sizeof(__pyx_k_classify), 0, 0, 1, 1},
    {&__pyx_n_s_classindex, __pyx_k_classindex, sizeof(__pyx_k_classindex), 0, 0, 1, 1},
    {&__pyx_n_s_clearAncestorPartialdecs, __pyx_k_clearAncestorPartialdecs, sizeof(__pyx_k_clearAncestorPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_clearCurrentPartialdecs, __pyx_k_clearCurrentPartialdecs, sizeof(__pyx_k_clearCurrentPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_clearFinishedPartialdecs, __pyx_k_clearFinishedPartialdecs, sizeof(__pyx_k_clearFinishedPartialdecs), 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_clocktime, __pyx_k_clocktime, sizeof(__pyx_k_clocktime), 0, 0, 1, 1},
    {&__pyx_n_s_col, __pyx_k_col, sizeof(__pyx_k_col), 0, 0, 1, 1},
    {&__pyx_n_s_collections_abc, __pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 0, 1, 1},
    {&__pyx_n_s_complete, __pyx_k_complete, sizeof(__pyx_k_complete), 0, 0, 1, 1},
    {&__pyx_n_s_completeByConnected, __pyx_k_completeByConnected, sizeof(__pyx_k_completeByConnected), 0, 0, 1, 1},
    {&__pyx_n_s_completeByConnectedConssAdjacenc, __pyx_k_completeByConnectedConssAdjacenc, sizeof(__pyx_k_completeByConnectedConssAdjacenc), 0, 0, 1, 1},
    {&__pyx_n_s_completeGreedily, __pyx_k_completeGreedily, sizeof(__pyx_k_completeGreedily), 0, 0, 1, 1},
    {&__pyx_n_s_comppartialdec, __pyx_k_comppartialdec, sizeof(__pyx_k_comppartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_cons, __pyx_k_cons, sizeof(__pyx_k_cons), 0, 0, 1, 1},
    {&__pyx_n_s_consIndex, __pyx_k_consIndex, sizeof(__pyx_k_consIndex), 0, 0, 1, 1},
    {&__pyx_n_s_consclassesmaster, __pyx_k_consclassesmaster, sizeof(__pyx_k_consclassesmaster), 0, 0, 1, 1},
    {&__pyx_n_s_consclassifier, __pyx_k_consclassifier, sizeof(__pyx_k_consclassifier), 0, 0, 1, 1},
    {&__pyx_n_s_consclassifiername, __pyx_k_consclassifiername, sizeof(__pyx_k_consclassifiername), 0, 0, 1, 1},
    {&__pyx_n_s_consclassifiers, __pyx_k_consclassifiers, sizeof(__pyx_k_consclassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_considerImplicits, __pyx_k_considerImplicits, sizeof(__pyx_k_considerImplicits), 0, 0, 1, 1},
    {&__pyx_n_s_conspartitioncollection, __pyx_k_conspartitioncollection, sizeof(__pyx_k_conspartitioncollection), 0, 0, 1, 1},
    {&__pyx_n_s_conspartitioncollection_element, __pyx_k_conspartitioncollection_element, sizeof(__pyx_k_conspartitioncollection_element), 0, 0, 1, 1},
    {&__pyx_n_s_conspartitioncollection_ptr, __pyx_k_conspartitioncollection_ptr, sizeof(__pyx_k_conspartitioncollection_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_conspatitionptr, __pyx_k_conspatitionptr, sizeof(__pyx_k_conspatitionptr), 0, 0, 1, 1},
    {&__pyx_n_s_conss, __pyx_k_conss, sizeof(__pyx_k_conss), 0, 0, 1, 1},
    {&__pyx_n_s_consschanged, __pyx_k_consschanged, sizeof(__pyx_k_consschanged), 0, 0, 1, 1},
    {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
    {&__pyx_n_s_copyPartitionStatistics, __pyx_k_copyPartitionStatistics, sizeof(__pyx_k_copyPartitionStatistics), 0, 0, 1, 1},
    {&__pyx_n_s_copy_2, __pyx_k_copy_2, sizeof(__pyx_k_copy_2), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_ancestor, __pyx_k_cpp_ancestor, sizeof(__pyx_k_cpp_ancestor), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_ancestor_id, __pyx_k_cpp_ancestor_id, sizeof(__pyx_k_cpp_ancestor_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_block, __pyx_k_cpp_block, sizeof(__pyx_k_cpp_block), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_block1_id, __pyx_k_cpp_block1_id, sizeof(__pyx_k_cpp_block1_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_block2_id, __pyx_k_cpp_block2_id, sizeof(__pyx_k_cpp_block2_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_block_id, __pyx_k_cpp_block_id, sizeof(__pyx_k_cpp_block_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_blockrepid, __pyx_k_cpp_blockrepid, sizeof(__pyx_k_cpp_blockrepid), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_candidates, __pyx_k_cpp_candidates, sizeof(__pyx_k_cpp_candidates), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_candidatesNBlocks, __pyx_k_cpp_candidatesNBlocks, sizeof(__pyx_k_cpp_candidatesNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_classificationtime, __pyx_k_cpp_classificationtime, sizeof(__pyx_k_cpp_classificationtime), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_clocktime, __pyx_k_cpp_clocktime, sizeof(__pyx_k_cpp_clocktime), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_comppartialdec, __pyx_k_cpp_comppartialdec, sizeof(__pyx_k_cpp_comppartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_consclassesmaster, __pyx_k_cpp_consclassesmaster, sizeof(__pyx_k_cpp_consclassesmaster), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_consindex, __pyx_k_cpp_consindex, sizeof(__pyx_k_cpp_consindex), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_conspartitioncollection, __pyx_k_cpp_conspartitioncollection, sizeof(__pyx_k_cpp_conspartitioncollection), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_dec_id, __pyx_k_cpp_dec_id, sizeof(__pyx_k_cpp_dec_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_detailLevel, __pyx_k_cpp_detailLevel, sizeof(__pyx_k_cpp_detailLevel), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_detectorchain_id, __pyx_k_cpp_detectorchain_id, sizeof(__pyx_k_cpp_detectorchain_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_detectorchainindex, __pyx_k_cpp_detectorchainindex, sizeof(__pyx_k_cpp_detectorchainindex), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_finished, __pyx_k_cpp_finished, sizeof(__pyx_k_cpp_finished), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_firstblock_id, __pyx_k_cpp_firstblock_id, sizeof(__pyx_k_cpp_firstblock_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_fromorig, __pyx_k_cpp_fromorig, sizeof(__pyx_k_cpp_fromorig), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_ignoreDetectionLimits, __pyx_k_cpp_ignoreDetectionLimits, sizeof(__pyx_k_cpp_ignoreDetectionLimits), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_nblocks, __pyx_k_cpp_nblocks, sizeof(__pyx_k_cpp_nblocks), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_nblockscandidatescalctime, __pyx_k_cpp_nblockscandidatescalctime, sizeof(__pyx_k_cpp_nblockscandidatescalctime), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_newlist, __pyx_k_cpp_newlist, sizeof(__pyx_k_cpp_newlist), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_newvector, __pyx_k_cpp_newvector, sizeof(__pyx_k_cpp_newvector), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_nnewblocks, __pyx_k_cpp_nnewblocks, sizeof(__pyx_k_cpp_nnewblocks), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_otherdata, __pyx_k_cpp_otherdata, sizeof(__pyx_k_cpp_otherdata), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_otherpartialdec, __pyx_k_cpp_otherpartialdec, sizeof(__pyx_k_cpp_otherpartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_otherpartialdecs, __pyx_k_cpp_otherpartialdecs, sizeof(__pyx_k_cpp_otherpartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_partialdec, __pyx_k_cpp_partialdec, sizeof(__pyx_k_cpp_partialdec), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_partialdecs, __pyx_k_cpp_partialdecs, sizeof(__pyx_k_cpp_partialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_partition, __pyx_k_cpp_partition, sizeof(__pyx_k_cpp_partition), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_pct, __pyx_k_cpp_pct, sizeof(__pyx_k_cpp_pct), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_postprocessingtime, __pyx_k_cpp_postprocessingtime, sizeof(__pyx_k_cpp_postprocessingtime), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_rep_id, __pyx_k_cpp_rep_id, sizeof(__pyx_k_cpp_rep_id), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_repid, __pyx_k_cpp_repid, sizeof(__pyx_k_cpp_repid), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_translatingtime, __pyx_k_cpp_translatingtime, sizeof(__pyx_k_cpp_translatingtime), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_varclasseslinking, __pyx_k_cpp_varclasseslinking, sizeof(__pyx_k_cpp_varclasseslinking), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_varclassesmaster, __pyx_k_cpp_varclassesmaster, sizeof(__pyx_k_cpp_varclassesmaster), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_variables, __pyx_k_cpp_variables, sizeof(__pyx_k_cpp_variables), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_varid, __pyx_k_cpp_varid, sizeof(__pyx_k_cpp_varid), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_varindex, __pyx_k_cpp_varindex, sizeof(__pyx_k_cpp_varindex), 0, 0, 1, 1},
    {&__pyx_n_s_cpp_varpartitioncollection, __pyx_k_cpp_varpartitioncollection, sizeof(__pyx_k_cpp_varpartitioncollection), 0, 0, 1, 1},
    {&__pyx_n_s_createConsPart, __pyx_k_createConsPart, sizeof(__pyx_k_createConsPart), 0, 0, 1, 1},
    {&__pyx_n_s_createConssAdjacency, __pyx_k_createConssAdjacency, sizeof(__pyx_k_createConssAdjacency), 0, 0, 1, 1},
    {&__pyx_n_s_createDecomposition, __pyx_k_createDecomposition, sizeof(__pyx_k_createDecomposition), 0, 0, 1, 1},
    {&__pyx_n_s_createDirectory, __pyx_k_createDirectory, sizeof(__pyx_k_createDirectory), 0, 0, 1, 1},
    {&__pyx_n_s_createGcgCol, __pyx_k_createGcgCol, sizeof(__pyx_k_createGcgCol), 0, 0, 1, 1},
    {&__pyx_n_s_createVarPart, __pyx_k_createVarPart, sizeof(__pyx_k_createVarPart), 0, 0, 1, 1},
    {&__pyx_n_s_createscip, __pyx_k_createscip, sizeof(__pyx_k_createscip), 0, 0, 1, 1},
    {&__pyx_n_s_dec, __pyx_k_dec, sizeof(__pyx_k_dec), 0, 0, 1, 1},
    {&__pyx_n_u_dec, __pyx_k_dec, sizeof(__pyx_k_dec), 0, 1, 0, 1},
    {&__pyx_n_s_dec_id, __pyx_k_dec_id, sizeof(__pyx_k_dec_id), 0, 0, 1, 1},
    {&__pyx_n_s_decchar, __pyx_k_decchar, sizeof(__pyx_k_decchar), 0, 0, 1, 1},
    {&__pyx_n_s_decids, __pyx_k_decids, sizeof(__pyx_k_decids), 0, 0, 1, 1},
    {&__pyx_n_s_decinfo, __pyx_k_decinfo, sizeof(__pyx_k_decinfo), 0, 0, 1, 1},
    {&__pyx_n_s_decomp, __pyx_k_decomp, sizeof(__pyx_k_decomp), 0, 0, 1, 1},
    {&__pyx_n_s_decompInfo, __pyx_k_decompInfo, sizeof(__pyx_k_decompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_decomps, __pyx_k_decomps, sizeof(__pyx_k_decomps), 0, 0, 1, 1},
    {&__pyx_n_s_deleteEmptyBlocks, __pyx_k_deleteEmptyBlocks, sizeof(__pyx_k_deleteEmptyBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_deleteOpencons, __pyx_k_deleteOpencons, sizeof(__pyx_k_deleteOpencons), 0, 0, 1, 1},
    {&__pyx_n_s_deleteOpenvar, __pyx_k_deleteOpenvar, sizeof(__pyx_k_deleteOpenvar), 0, 0, 1, 1},
    {&__pyx_n_s_desc, __pyx_k_desc, sizeof(__pyx_k_desc), 0, 0, 1, 1},
    {&__pyx_n_s_det_prob_data, __pyx_k_det_prob_data, sizeof(__pyx_k_det_prob_data), 0, 0, 1, 1},
    {&__pyx_n_s_detailLevel, __pyx_k_detailLevel, sizeof(__pyx_k_detailLevel), 0, 0, 1, 1},
    {&__pyx_n_s_detect, __pyx_k_detect, sizeof(__pyx_k_detect), 0, 0, 1, 1},
    {&__pyx_kp_u_detection_classification_varclas, __pyx_k_detection_classification_varclas, sizeof(__pyx_k_detection_classification_varclas), 0, 1, 0, 0},
    {&__pyx_kp_u_detection_detectors_enabled, __pyx_k_detection_detectors_enabled, sizeof(__pyx_k_detection_detectors_enabled), 0, 1, 0, 0},
    {&__pyx_kp_u_detection_detectors_finishingena, __pyx_k_detection_detectors_finishingena, sizeof(__pyx_k_detection_detectors_finishingena), 0, 1, 0, 0},
    {&__pyx_kp_u_detection_detectors_postprocessi, __pyx_k_detection_detectors_postprocessi, sizeof(__pyx_k_detection_detectors_postprocessi), 0, 1, 0, 0},
    {&__pyx_n_s_detector, __pyx_k_detector, sizeof(__pyx_k_detector), 0, 0, 1, 1},
    {&__pyx_n_s_detector_name, __pyx_k_detector_name, sizeof(__pyx_k_detector_name), 0, 0, 1, 1},
    {&__pyx_n_s_detectorchain_id, __pyx_k_detectorchain_id, sizeof(__pyx_k_detectorchain_id), 0, 0, 1, 1},
    {&__pyx_n_s_detectorchainindex, __pyx_k_detectorchainindex, sizeof(__pyx_k_detectorchainindex), 0, 0, 1, 1},
    {&__pyx_n_s_detectorname, __pyx_k_detectorname, sizeof(__pyx_k_detectorname), 0, 0, 1, 1},
    {&__pyx_n_s_detectors, __pyx_k_detectors, sizeof(__pyx_k_detectors), 0, 0, 1, 1},
    {&__pyx_n_s_detprobdata, __pyx_k_detprobdata, sizeof(__pyx_k_detprobdata), 0, 0, 1, 1},
    {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
    {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1},
    {&__pyx_n_s_directory, __pyx_k_directory, sizeof(__pyx_k_directory), 0, 0, 1, 1},
    {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
    {&__pyx_n_s_displayInfo, __pyx_k_displayInfo, sizeof(__pyx_k_displayInfo), 0, 0, 1, 1},
    {&__pyx_n_s_dualsolconv, __pyx_k_dualsolconv, sizeof(__pyx_k_dualsolconv), 0, 0, 1, 1},
    {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
    {&__pyx_n_s_enabled, __pyx_k_enabled, sizeof(__pyx_k_enabled), 0, 0, 1, 1},
    {&__pyx_n_s_enabledfinishing, __pyx_k_enabledfinishing, sizeof(__pyx_k_enabledfinishing), 0, 0, 1, 1},
    {&__pyx_n_s_enabledpostprocessing, __pyx_k_enabledpostprocessing, sizeof(__pyx_k_enabledpostprocessing), 0, 0, 1, 1},
    {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
    {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
    {&__pyx_n_s_exactEnabled, __pyx_k_exactEnabled, sizeof(__pyx_k_exactEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_exist_ok, __pyx_k_exist_ok, sizeof(__pyx_k_exist_ok), 0, 0, 1, 1},
    {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
    {&__pyx_n_s_exitDetector, __pyx_k_exitDetector, sizeof(__pyx_k_exitDetector), 0, 0, 1, 1},
    {&__pyx_n_s_exitSolution, __pyx_k_exitSolution, sizeof(__pyx_k_exitSolution), 0, 0, 1, 1},
    {&__pyx_n_s_exitSolver, __pyx_k_exitSolver, sizeof(__pyx_k_exitSolver), 0, 0, 1, 1},
    {&__pyx_kp_u_experimental_benders_score, __pyx_k_experimental_benders_score, sizeof(__pyx_k_experimental_benders_score), 0, 1, 0, 0},
    {&__pyx_n_s_extension, __pyx_k_extension, sizeof(__pyx_k_extension), 0, 0, 1, 1},
    {&__pyx_n_s_findVarsLinkingToMaster, __pyx_k_findVarsLinkingToMaster, sizeof(__pyx_k_findVarsLinkingToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_findVarsLinkingToStairlinking, __pyx_k_findVarsLinkingToStairlinking, sizeof(__pyx_k_findVarsLinkingToStairlinking), 0, 0, 1, 1},
    {&__pyx_n_s_finishPartialdec, __pyx_k_finishPartialdec, sizeof(__pyx_k_finishPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_finished, __pyx_k_finished, sizeof(__pyx_k_finished), 0, 0, 1, 1},
    {&__pyx_n_s_firstblock_id, __pyx_k_firstblock_id, sizeof(__pyx_k_firstblock_id), 0, 0, 1, 1},
    {&__pyx_n_s_fixConsToBlock, __pyx_k_fixConsToBlock, sizeof(__pyx_k_fixConsToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_fixConsToBlockId, __pyx_k_fixConsToBlockId, sizeof(__pyx_k_fixConsToBlockId), 0, 0, 1, 1},
    {&__pyx_n_s_fixConsToMaster, __pyx_k_fixConsToMaster, sizeof(__pyx_k_fixConsToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_fixConssToBlock, __pyx_k_fixConssToBlock, sizeof(__pyx_k_fixConssToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_fixConssToBlockId, __pyx_k_fixConssToBlockId, sizeof(__pyx_k_fixConssToBlockId), 0, 0, 1, 1},
    {&__pyx_n_s_fixConssToMaster, __pyx_k_fixConssToMaster, sizeof(__pyx_k_fixConssToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_fixVarToLinking, __pyx_k_fixVarToLinking, sizeof(__pyx_k_fixVarToLinking), 0, 0, 1, 1},
    {&__pyx_n_s_fixVarToMaster, __pyx_k_fixVarToMaster, sizeof(__pyx_k_fixVarToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_fixVarToStairlinking, __pyx_k_fixVarToStairlinking, sizeof(__pyx_k_fixVarToStairlinking), 0, 0, 1, 1},
    {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
    {&__pyx_n_s_freeConsClassifier, __pyx_k_freeConsClassifier, sizeof(__pyx_k_freeConsClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_freeDetector, __pyx_k_freeDetector, sizeof(__pyx_k_freeDetector), 0, 0, 1, 1},
    {&__pyx_n_s_freeSolver, __pyx_k_freeSolver, sizeof(__pyx_k_freeSolver), 0, 0, 1, 1},
    {&__pyx_n_s_freeTemporaryData, __pyx_k_freeTemporaryData, sizeof(__pyx_k_freeTemporaryData), 0, 0, 1, 1},
    {&__pyx_n_s_freeVarClassifier, __pyx_k_freeVarClassifier, sizeof(__pyx_k_freeVarClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_freqcallround, __pyx_k_freqcallround, sizeof(__pyx_k_freqcallround), 0, 0, 1, 1},
    {&__pyx_n_s_freqcallroundoriginal, __pyx_k_freqcallroundoriginal, sizeof(__pyx_k_freqcallroundoriginal), 0, 0, 1, 1},
    {&__pyx_n_s_fromorig, __pyx_k_fromorig, sizeof(__pyx_k_fromorig), 0, 0, 1, 1},
    {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
    {&__pyx_n_s_gcg_col, __pyx_k_gcg_col, sizeof(__pyx_k_gcg_col), 0, 0, 1, 1},
    {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
    {&__pyx_n_s_getAllSubsets, __pyx_k_getAllSubsets, sizeof(__pyx_k_getAllSubsets), 0, 0, 1, 1},
    {&__pyx_n_s_getAncestorID, __pyx_k_getAncestorID, sizeof(__pyx_k_getAncestorID), 0, 0, 1, 1},
    {&__pyx_n_s_getAncestorList, __pyx_k_getAncestorList, sizeof(__pyx_k_getAncestorList), 0, 0, 1, 1},
    {&__pyx_n_s_getAncestorPartialdec, __pyx_k_getAncestorPartialdec, sizeof(__pyx_k_getAncestorPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_getBlocksForRep, __pyx_k_getBlocksForRep, sizeof(__pyx_k_getBlocksForRep), 0, 0, 1, 1},
    {&__pyx_n_s_getClassDecompInfo, __pyx_k_getClassDecompInfo, sizeof(__pyx_k_getClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_getClassDescription, __pyx_k_getClassDescription, sizeof(__pyx_k_getClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_getClassName, __pyx_k_getClassName, sizeof(__pyx_k_getClassName), 0, 0, 1, 1},
    {&__pyx_n_s_getClassNameOfCons, __pyx_k_getClassNameOfCons, sizeof(__pyx_k_getClassNameOfCons), 0, 0, 1, 1},
    {&__pyx_n_s_getClassNameOfVar, __pyx_k_getClassNameOfVar, sizeof(__pyx_k_getClassNameOfVar), 0, 0, 1, 1},
    {&__pyx_n_s_getClassOfCons, __pyx_k_getClassOfCons, sizeof(__pyx_k_getClassOfCons), 0, 0, 1, 1},
    {&__pyx_n_s_getClassOfVar, __pyx_k_getClassOfVar, sizeof(__pyx_k_getClassOfVar), 0, 0, 1, 1},
    {&__pyx_n_s_getCons, __pyx_k_getCons, sizeof(__pyx_k_getCons), 0, 0, 1, 1},
    {&__pyx_n_s_getConsPartition, __pyx_k_getConsPartition, sizeof(__pyx_k_getConsPartition), 0, 0, 1, 1},
    {&__pyx_n_s_getConsPartitions, __pyx_k_getConsPartitions, sizeof(__pyx_k_getConsPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_getConssForBlock, __pyx_k_getConssForBlock, sizeof(__pyx_k_getConssForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getConssForBlocks, __pyx_k_getConssForBlocks, sizeof(__pyx_k_getConssForBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_getConssForCons, __pyx_k_getConssForCons, sizeof(__pyx_k_getConssForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getConssForVar, __pyx_k_getConssForVar, sizeof(__pyx_k_getConssForVar), 0, 0, 1, 1},
    {&__pyx_n_s_getDetectorClockTime, __pyx_k_getDetectorClockTime, sizeof(__pyx_k_getDetectorClockTime), 0, 0, 1, 1},
    {&__pyx_n_s_getDetectorClockTimes, __pyx_k_getDetectorClockTimes, sizeof(__pyx_k_getDetectorClockTimes), 0, 0, 1, 1},
    {&__pyx_n_s_getDetectorchainInfo, __pyx_k_getDetectorchainInfo, sizeof(__pyx_k_getDetectorchainInfo), 0, 0, 1, 1},
    {&__pyx_n_s_getDetprobdata, __pyx_k_getDetprobdata, sizeof(__pyx_k_getDetprobdata), 0, 0, 1, 1},
    {&__pyx_n_s_getDetprobdataOrig, __pyx_k_getDetprobdataOrig, sizeof(__pyx_k_getDetprobdataOrig), 0, 0, 1, 1},
    {&__pyx_n_s_getDetprobdataPresolved, __pyx_k_getDetprobdataPresolved, sizeof(__pyx_k_getDetprobdataPresolved), 0, 0, 1, 1},
    {&__pyx_n_s_getDualbound, __pyx_k_getDualbound, sizeof(__pyx_k_getDualbound), 0, 0, 1, 1},
    {&__pyx_n_s_getFinishedByFinisher, __pyx_k_getFinishedByFinisher, sizeof(__pyx_k_getFinishedByFinisher), 0, 0, 1, 1},
    {&__pyx_n_s_getFinishedPartialdec, __pyx_k_getFinishedPartialdec, sizeof(__pyx_k_getFinishedPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_getFinishedPartialdecs, __pyx_k_getFinishedPartialdecs, sizeof(__pyx_k_getFinishedPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getHashValue, __pyx_k_getHashValue, sizeof(__pyx_k_getHashValue), 0, 0, 1, 1},
    {&__pyx_n_s_getID, __pyx_k_getID, sizeof(__pyx_k_getID), 0, 0, 1, 1},
    {&__pyx_n_s_getIndexForCons, __pyx_k_getIndexForCons, sizeof(__pyx_k_getIndexForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getIndexForVar, __pyx_k_getIndexForVar, sizeof(__pyx_k_getIndexForVar), 0, 0, 1, 1},
    {&__pyx_n_s_getLinkingvars, __pyx_k_getLinkingvars, sizeof(__pyx_k_getLinkingvars), 0, 0, 1, 1},
    {&__pyx_n_s_getMasterProb, __pyx_k_getMasterProb, sizeof(__pyx_k_getMasterProb), 0, 0, 1, 1},
    {&__pyx_n_s_getMasterconss, __pyx_k_getMasterconss, sizeof(__pyx_k_getMasterconss), 0, 0, 1, 1},
    {&__pyx_n_s_getMastervars, __pyx_k_getMastervars, sizeof(__pyx_k_getMastervars), 0, 0, 1, 1},
    {&__pyx_n_s_getModel, __pyx_k_getModel, sizeof(__pyx_k_getModel), 0, 0, 1, 1},
    {&__pyx_n_s_getNAncestorPartialdecs, __pyx_k_getNAncestorPartialdecs, sizeof(__pyx_k_getNAncestorPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getNAncestors, __pyx_k_getNAncestors, sizeof(__pyx_k_getNAncestors), 0, 0, 1, 1},
    {&__pyx_n_s_getNBlocks, __pyx_k_getNBlocks, sizeof(__pyx_k_getNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_getNClasses, __pyx_k_getNClasses, sizeof(__pyx_k_getNClasses), 0, 0, 1, 1},
    {&__pyx_n_s_getNCoeffsForBlock, __pyx_k_getNCoeffsForBlock, sizeof(__pyx_k_getNCoeffsForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getNCoeffsForMaster, __pyx_k_getNCoeffsForMaster, sizeof(__pyx_k_getNCoeffsForMaster), 0, 0, 1, 1},
    {&__pyx_n_s_getNConsClassifiers, __pyx_k_getNConsClassifiers, sizeof(__pyx_k_getNConsClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_getNConsPartitions, __pyx_k_getNConsPartitions, sizeof(__pyx_k_getNConsPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_getNConss, __pyx_k_getNConss, sizeof(__pyx_k_getNConss), 0, 0, 1, 1},
    {&__pyx_n_s_getNConssForBlock, __pyx_k_getNConssForBlock, sizeof(__pyx_k_getNConssForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getNConssForCons, __pyx_k_getNConssForCons, sizeof(__pyx_k_getNConssForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getNConssForVar, __pyx_k_getNConssForVar, sizeof(__pyx_k_getNConssForVar), 0, 0, 1, 1},
    {&__pyx_n_s_getNConssOfClasses, __pyx_k_getNConssOfClasses, sizeof(__pyx_k_getNConssOfClasses), 0, 0, 1, 1},
    {&__pyx_n_s_getNDetectors, __pyx_k_getNDetectors, sizeof(__pyx_k_getNDetectors), 0, 0, 1, 1},
    {&__pyx_n_s_getNFinishedPartialdecs, __pyx_k_getNFinishedPartialdecs, sizeof(__pyx_k_getNFinishedPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getNLinkingvars, __pyx_k_getNLinkingvars, sizeof(__pyx_k_getNLinkingvars), 0, 0, 1, 1},
    {&__pyx_n_s_getNMasterconss, __pyx_k_getNMasterconss, sizeof(__pyx_k_getNMasterconss), 0, 0, 1, 1},
    {&__pyx_n_s_getNMastervars, __pyx_k_getNMastervars, sizeof(__pyx_k_getNMastervars), 0, 0, 1, 1},
    {&__pyx_n_s_getNNewBlocks, __pyx_k_getNNewBlocks, sizeof(__pyx_k_getNNewBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_getNNewBlocksVector, __pyx_k_getNNewBlocksVector, sizeof(__pyx_k_getNNewBlocksVector), 0, 0, 1, 1},
    {&__pyx_n_s_getNNonzeros, __pyx_k_getNNonzeros, sizeof(__pyx_k_getNNonzeros), 0, 0, 1, 1},
    {&__pyx_n_s_getNOpenPartialdecs, __pyx_k_getNOpenPartialdecs, sizeof(__pyx_k_getNOpenPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getNOpenconss, __pyx_k_getNOpenconss, sizeof(__pyx_k_getNOpenconss), 0, 0, 1, 1},
    {&__pyx_n_s_getNOpenvars, __pyx_k_getNOpenvars, sizeof(__pyx_k_getNOpenvars), 0, 0, 1, 1},
    {&__pyx_n_s_getNPartialdecs, __pyx_k_getNPartialdecs, sizeof(__pyx_k_getNPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getNReps, __pyx_k_getNReps, sizeof(__pyx_k_getNReps), 0, 0, 1, 1},
    {&__pyx_n_s_getNStairlinkingvars, __pyx_k_getNStairlinkingvars, sizeof(__pyx_k_getNStairlinkingvars), 0, 0, 1, 1},
    {&__pyx_n_s_getNTotalStairlinkingvars, __pyx_k_getNTotalStairlinkingvars, sizeof(__pyx_k_getNTotalStairlinkingvars), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarClassifiers, __pyx_k_getNVarClassifiers, sizeof(__pyx_k_getNVarClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarPartitions, __pyx_k_getNVarPartitions, sizeof(__pyx_k_getNVarPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_getNVars, __pyx_k_getNVars, sizeof(__pyx_k_getNVars), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarsForBlock, __pyx_k_getNVarsForBlock, sizeof(__pyx_k_getNVarsForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarsForBlocks, __pyx_k_getNVarsForBlocks, sizeof(__pyx_k_getNVarsForBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarsForCons, __pyx_k_getNVarsForCons, sizeof(__pyx_k_getNVarsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getNVarsOfClasses, __pyx_k_getNVarsOfClasses, sizeof(__pyx_k_getNVarsOfClasses), 0, 0, 1, 1},
    {&__pyx_n_s_getName, __pyx_k_getName, sizeof(__pyx_k_getName), 0, 0, 1, 1},
    {&__pyx_n_s_getOpenPartialdecs, __pyx_k_getOpenPartialdecs, sizeof(__pyx_k_getOpenPartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_getOpenconss, __pyx_k_getOpenconss, sizeof(__pyx_k_getOpenconss), 0, 0, 1, 1},
    {&__pyx_n_s_getOpenvars, __pyx_k_getOpenvars, sizeof(__pyx_k_getOpenvars), 0, 0, 1, 1},
    {&__pyx_n_s_getOrigVarsFixedZero, __pyx_k_getOrigVarsFixedZero, sizeof(__pyx_k_getOrigVarsFixedZero), 0, 0, 1, 1},
    {&__pyx_n_s_getOrigvars, __pyx_k_getOrigvars, sizeof(__pyx_k_getOrigvars), 0, 0, 1, 1},
    {&__pyx_n_s_getPartDecompFromID, __pyx_k_getPartDecompFromID, sizeof(__pyx_k_getPartDecompFromID), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssFromFree, __pyx_k_getPctConssFromFree, sizeof(__pyx_k_getPctConssFromFree), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssFromFreeVector, __pyx_k_getPctConssFromFreeVector, sizeof(__pyx_k_getPctConssFromFreeVector), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssToBlock, __pyx_k_getPctConssToBlock, sizeof(__pyx_k_getPctConssToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssToBlockVector, __pyx_k_getPctConssToBlockVector, sizeof(__pyx_k_getPctConssToBlockVector), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssToBorder, __pyx_k_getPctConssToBorder, sizeof(__pyx_k_getPctConssToBorder), 0, 0, 1, 1},
    {&__pyx_n_s_getPctConssToBorderVector, __pyx_k_getPctConssToBorderVector, sizeof(__pyx_k_getPctConssToBorderVector), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsFromFree, __pyx_k_getPctVarsFromFree, sizeof(__pyx_k_getPctVarsFromFree), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsFromFreeVector, __pyx_k_getPctVarsFromFreeVector, sizeof(__pyx_k_getPctVarsFromFreeVector), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsToBlock, __pyx_k_getPctVarsToBlock, sizeof(__pyx_k_getPctVarsToBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsToBlockVector, __pyx_k_getPctVarsToBlockVector, sizeof(__pyx_k_getPctVarsToBlockVector), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsToBorder, __pyx_k_getPctVarsToBorder, sizeof(__pyx_k_getPctVarsToBorder), 0, 0, 1, 1},
    {&__pyx_n_s_getPctVarsToBorderVector, __pyx_k_getPctVarsToBorderVector, sizeof(__pyx_k_getPctVarsToBorderVector), 0, 0, 1, 1},
    {&__pyx_n_s_getRelevantConss, __pyx_k_getRelevantConss, sizeof(__pyx_k_getRelevantConss), 0, 0, 1, 1},
    {&__pyx_n_s_getRelevantVars, __pyx_k_getRelevantVars, sizeof(__pyx_k_getRelevantVars), 0, 0, 1, 1},
    {&__pyx_n_s_getRepForBlock, __pyx_k_getRepForBlock, sizeof(__pyx_k_getRepForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getRepVarmap, __pyx_k_getRepVarmap, sizeof(__pyx_k_getRepVarmap), 0, 0, 1, 1},
    {&__pyx_n_s_getScore, __pyx_k_getScore, sizeof(__pyx_k_getScore), 0, 0, 1, 1},
    {&__pyx_n_s_getSortedCandidatesNBlocks, __pyx_k_getSortedCandidatesNBlocks, sizeof(__pyx_k_getSortedCandidatesNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_getStage, __pyx_k_getStage, sizeof(__pyx_k_getStage), 0, 0, 1, 1},
    {&__pyx_n_s_getTranslatedpartialdecid, __pyx_k_getTranslatedpartialdecid, sizeof(__pyx_k_getTranslatedpartialdecid), 0, 0, 1, 1},
    {&__pyx_n_s_getUsergiven, __pyx_k_getUsergiven, sizeof(__pyx_k_getUsergiven), 0, 0, 1, 1},
    {&__pyx_n_s_getVal, __pyx_k_getVal, sizeof(__pyx_k_getVal), 0, 0, 1, 1},
    {&__pyx_n_s_getValsForCons, __pyx_k_getValsForCons, sizeof(__pyx_k_getValsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getVar, __pyx_k_getVar, sizeof(__pyx_k_getVar), 0, 0, 1, 1},
    {&__pyx_n_s_getVarPartition, __pyx_k_getVarPartition, sizeof(__pyx_k_getVarPartition), 0, 0, 1, 1},
    {&__pyx_n_s_getVarPartitions, __pyx_k_getVarPartitions, sizeof(__pyx_k_getVarPartitions), 0, 0, 1, 1},
    {&__pyx_n_s_getVarProbindexForBlock, __pyx_k_getVarProbindexForBlock, sizeof(__pyx_k_getVarProbindexForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getVarsForBlock, __pyx_k_getVarsForBlock, sizeof(__pyx_k_getVarsForBlock), 0, 0, 1, 1},
    {&__pyx_n_s_getVarsForCons, __pyx_k_getVarsForCons, sizeof(__pyx_k_getVarsForCons), 0, 0, 1, 1},
    {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
    {&__pyx_n_s_hasSetppMaster, __pyx_k_hasSetppMaster, sizeof(__pyx_k_hasSetppMaster), 0, 0, 1, 1},
    {&__pyx_n_s_hasSetppcMaster, __pyx_k_hasSetppcMaster, sizeof(__pyx_k_hasSetppcMaster), 0, 0, 1, 1},
    {&__pyx_n_s_hasSetppccardMaster, __pyx_k_hasSetppccardMaster, sizeof(__pyx_k_hasSetppccardMaster), 0, 0, 1, 1},
    {&__pyx_n_s_heuristicEnabled, __pyx_k_heuristicEnabled, sizeof(__pyx_k_heuristicEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
    {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
    {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1},
    {&__pyx_n_s_ignoreDetectionLimits, __pyx_k_ignoreDetectionLimits, sizeof(__pyx_k_ignoreDetectionLimits), 0, 0, 1, 1},
    {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
    {&__pyx_n_s_includeConsClassifier, __pyx_k_includeConsClassifier, sizeof(__pyx_k_includeConsClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_includeDefaultPlugins, __pyx_k_includeDefaultPlugins, sizeof(__pyx_k_includeDefaultPlugins), 0, 0, 1, 1},
    {&__pyx_n_s_includeDetector, __pyx_k_includeDetector, sizeof(__pyx_k_includeDetector), 0, 0, 1, 1},
    {&__pyx_n_s_includePricingSolver, __pyx_k_includePricingSolver, sizeof(__pyx_k_includePricingSolver), 0, 0, 1, 1},
    {&__pyx_n_s_includeScore, __pyx_k_includeScore, sizeof(__pyx_k_includeScore), 0, 0, 1, 1},
    {&__pyx_n_s_includeVarClassifier, __pyx_k_includeVarClassifier, sizeof(__pyx_k_includeVarClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
    {&__pyx_n_s_initDetector, __pyx_k_initDetector, sizeof(__pyx_k_initDetector), 0, 0, 1, 1},
    {&__pyx_n_s_initSolution, __pyx_k_initSolution, sizeof(__pyx_k_initSolution), 0, 0, 1, 1},
    {&__pyx_n_s_initSolver, __pyx_k_initSolver, sizeof(__pyx_k_initSolver), 0, 0, 1, 1},
    {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
    {&__pyx_n_s_isAssignedToOrigProb, __pyx_k_isAssignedToOrigProb, sizeof(__pyx_k_isAssignedToOrigProb), 0, 0, 1, 1},
    {&__pyx_n_s_isComplete, __pyx_k_isComplete, sizeof(__pyx_k_isComplete), 0, 0, 1, 1},
    {&__pyx_n_s_isConsCardinalityCons, __pyx_k_isConsCardinalityCons, sizeof(__pyx_k_isConsCardinalityCons), 0, 0, 1, 1},
    {&__pyx_n_s_isConsClassified, __pyx_k_isConsClassified, sizeof(__pyx_k_isConsClassified), 0, 0, 1, 1},
    {&__pyx_n_s_isConsMastercons, __pyx_k_isConsMastercons, sizeof(__pyx_k_isConsMastercons), 0, 0, 1, 1},
    {&__pyx_n_s_isConsOpencons, __pyx_k_isConsOpencons, sizeof(__pyx_k_isConsOpencons), 0, 0, 1, 1},
    {&__pyx_n_s_isConsSetpp, __pyx_k_isConsSetpp, sizeof(__pyx_k_isConsSetpp), 0, 0, 1, 1},
    {&__pyx_n_s_isConsSetppc, __pyx_k_isConsSetppc, sizeof(__pyx_k_isConsSetppc), 0, 0, 1, 1},
    {&__pyx_n_s_isConssAdjInitialized, __pyx_k_isConssAdjInitialized, sizeof(__pyx_k_isConssAdjInitialized), 0, 0, 1, 1},
    {&__pyx_n_s_isPartialdecDuplicateofFinished, __pyx_k_isPartialdecDuplicateofFinished, sizeof(__pyx_k_isPartialdecDuplicateofFinished), 0, 0, 1, 1},
    {&__pyx_n_s_isTrivial, __pyx_k_isTrivial, sizeof(__pyx_k_isTrivial), 0, 0, 1, 1},
    {&__pyx_n_s_isVarBlockvarOfBlock, __pyx_k_isVarBlockvarOfBlock, sizeof(__pyx_k_isVarBlockvarOfBlock), 0, 0, 1, 1},
    {&__pyx_n_s_isVarClassified, __pyx_k_isVarClassified, sizeof(__pyx_k_isVarClassified), 0, 0, 1, 1},
    {&__pyx_n_s_isVarLinkingvar, __pyx_k_isVarLinkingvar, sizeof(__pyx_k_isVarLinkingvar), 0, 0, 1, 1},
    {&__pyx_n_s_isVarMastervar, __pyx_k_isVarMastervar, sizeof(__pyx_k_isVarMastervar), 0, 0, 1, 1},
    {&__pyx_n_s_isVarOpenvar, __pyx_k_isVarOpenvar, sizeof(__pyx_k_isVarOpenvar), 0, 0, 1, 1},
    {&__pyx_n_s_isVarStairlinkingvar, __pyx_k_isVarStairlinkingvar, sizeof(__pyx_k_isVarStairlinkingvar), 0, 0, 1, 1},
    {&__pyx_n_s_isVarStairlinkingvarOfBlock, __pyx_k_isVarStairlinkingvarOfBlock, sizeof(__pyx_k_isVarStairlinkingvarOfBlock), 0, 0, 1, 1},
    {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
    {&__pyx_n_s_is_enabled, __pyx_k_is_enabled, sizeof(__pyx_k_is_enabled), 0, 0, 1, 1},
    {&__pyx_kp_u_is_not_supported_Only_svg_and_p, __pyx_k_is_not_supported_Only_svg_and_p, sizeof(__pyx_k_is_not_supported_Only_svg_and_p), 0, 1, 0, 0},
    {&__pyx_n_s_is_presolved, __pyx_k_is_presolved, sizeof(__pyx_k_is_presolved), 0, 0, 1, 1},
    {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
    {&__pyx_n_s_isray, __pyx_k_isray, sizeof(__pyx_k_isray), 0, 0, 1, 1},
    {&__pyx_n_s_joinpath, __pyx_k_joinpath, sizeof(__pyx_k_joinpath), 0, 0, 1, 1},
    {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},
    {&__pyx_n_s_linking, __pyx_k_linking, sizeof(__pyx_k_linking), 0, 0, 1, 1},
    {&__pyx_n_s_listConsClassifiers, __pyx_k_listConsClassifiers, sizeof(__pyx_k_listConsClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_listDecompositions, __pyx_k_listDecompositions, sizeof(__pyx_k_listDecompositions), 0, 0, 1, 1},
    {&__pyx_n_s_listDetectors, __pyx_k_listDetectors, sizeof(__pyx_k_listDetectors), 0, 0, 1, 1},
    {&__pyx_n_s_listPricingSolvers, __pyx_k_listPricingSolvers, sizeof(__pyx_k_listPricingSolvers), 0, 0, 1, 1},
    {&__pyx_n_s_listScores, __pyx_k_listScores, sizeof(__pyx_k_listScores), 0, 0, 1, 1},
    {&__pyx_n_s_listVarClassifiers, __pyx_k_listVarClassifiers, sizeof(__pyx_k_listVarClassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
    {&__pyx_n_u_lowerbound, __pyx_k_lowerbound, sizeof(__pyx_k_lowerbound), 0, 1, 0, 1},
    {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
    {&__pyx_n_s_master, __pyx_k_master, sizeof(__pyx_k_master), 0, 0, 1, 1},
    {&__pyx_n_s_master_conss, __pyx_k_master_conss, sizeof(__pyx_k_master_conss), 0, 0, 1, 1},
    {&__pyx_n_s_master_prob, __pyx_k_master_prob, sizeof(__pyx_k_master_prob), 0, 0, 1, 1},
    {&__pyx_n_s_mastervars, __pyx_k_mastervars, sizeof(__pyx_k_mastervars), 0, 0, 1, 1},
    {&__pyx_kp_u_maxForWhiteScore, __pyx_k_maxForWhiteScore, sizeof(__pyx_k_maxForWhiteScore), 0, 1, 0, 0},
    {&__pyx_n_s_maxForWhiteScore_2, __pyx_k_maxForWhiteScore_2, sizeof(__pyx_k_maxForWhiteScore_2), 0, 0, 1, 1},
    {&__pyx_n_s_maxNumberOfClasses, __pyx_k_maxNumberOfClasses, sizeof(__pyx_k_maxNumberOfClasses), 0, 0, 1, 1},
    {&__pyx_kp_u_max_foreseeing_white, __pyx_k_max_foreseeing_white, sizeof(__pyx_k_max_foreseeing_white), 0, 1, 0, 0},
    {&__pyx_kp_u_max_foreseeing_white_with_aggreg, __pyx_k_max_foreseeing_white_with_aggreg, sizeof(__pyx_k_max_foreseeing_white_with_aggreg), 0, 1, 0, 0},
    {&__pyx_n_s_maxcallround, __pyx_k_maxcallround, sizeof(__pyx_k_maxcallround), 0, 0, 1, 1},
    {&__pyx_n_s_maxcallroundoriginal, __pyx_k_maxcallroundoriginal, sizeof(__pyx_k_maxcallroundoriginal), 0, 0, 1, 1},
    {&__pyx_n_s_mincallround, __pyx_k_mincallround, sizeof(__pyx_k_mincallround), 0, 0, 1, 1},
    {&__pyx_n_s_mincallroundoriginal, __pyx_k_mincallroundoriginal, sizeof(__pyx_k_mincallroundoriginal), 0, 0, 1, 1},
    {&__pyx_n_s_mkdir, __pyx_k_mkdir, sizeof(__pyx_k_mkdir), 0, 0, 1, 1},
    {&__pyx_n_s_mp, __pyx_k_mp, sizeof(__pyx_k_mp), 0, 0, 1, 1},
    {&__pyx_kp_u_nLinkingVars, __pyx_k_nLinkingVars, sizeof(__pyx_k_nLinkingVars), 0, 1, 0, 0},
    {&__pyx_kp_u_nMasterConss, __pyx_k_nMasterConss, sizeof(__pyx_k_nMasterConss), 0, 1, 0, 0},
    {&__pyx_kp_u_nMasterVars, __pyx_k_nMasterVars, sizeof(__pyx_k_nMasterVars), 0, 1, 0, 0},
    {&__pyx_n_s_n_consclassifiers, __pyx_k_n_consclassifiers, sizeof(__pyx_k_n_consclassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_n_detectors, __pyx_k_n_detectors, sizeof(__pyx_k_n_detectors), 0, 0, 1, 1},
    {&__pyx_n_s_n_pricing_solvers, __pyx_k_n_pricing_solvers, sizeof(__pyx_k_n_pricing_solvers), 0, 0, 1, 1},
    {&__pyx_n_s_n_scores, __pyx_k_n_scores, sizeof(__pyx_k_n_scores), 0, 0, 1, 1},
    {&__pyx_n_s_n_varclassifiers, __pyx_k_n_varclassifiers, sizeof(__pyx_k_n_varclassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_n_vars, __pyx_k_n_vars, sizeof(__pyx_k_n_vars), 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_nblocks, __pyx_k_nblocks, sizeof(__pyx_k_nblocks), 0, 0, 1, 1},
    {&__pyx_n_s_nblockscandidatescalctime, __pyx_k_nblockscandidatescalctime, sizeof(__pyx_k_nblockscandidatescalctime), 0, 0, 1, 1},
    {&__pyx_n_s_nclasses, __pyx_k_nclasses, sizeof(__pyx_k_nclasses), 0, 0, 1, 1},
    {&__pyx_n_s_ncons, __pyx_k_ncons, sizeof(__pyx_k_ncons), 0, 0, 1, 1},
    {&__pyx_n_s_nconsparts, __pyx_k_nconsparts, sizeof(__pyx_k_nconsparts), 0, 0, 1, 1},
    {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
    {&__pyx_n_s_newlist, __pyx_k_newlist, sizeof(__pyx_k_newlist), 0, 0, 1, 1},
    {&__pyx_n_u_newpartialdecs, __pyx_k_newpartialdecs, sizeof(__pyx_k_newpartialdecs), 0, 1, 0, 1},
    {&__pyx_n_s_newvector, __pyx_k_newvector, sizeof(__pyx_k_newvector), 0, 0, 1, 1},
    {&__pyx_n_s_nnewblocks, __pyx_k_nnewblocks, sizeof(__pyx_k_nnewblocks), 0, 0, 1, 1},
    {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
    {&__pyx_n_s_npartialdecs, __pyx_k_npartialdecs, sizeof(__pyx_k_npartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_nvars, __pyx_k_nvars, sizeof(__pyx_k_nvars), 0, 0, 1, 1},
    {&__pyx_n_s_nvotes, __pyx_k_nvotes, sizeof(__pyx_k_nvotes), 0, 0, 1, 1},
    {&__pyx_n_s_only_master, __pyx_k_only_master, sizeof(__pyx_k_only_master), 0, 0, 1, 1},
    {&__pyx_n_s_only_pricing, __pyx_k_only_pricing, sizeof(__pyx_k_only_pricing), 0, 0, 1, 1},
    {&__pyx_n_s_optimize, __pyx_k_optimize, sizeof(__pyx_k_optimize), 0, 0, 1, 1},
    {&__pyx_n_s_original, __pyx_k_original, sizeof(__pyx_k_original), 0, 0, 1, 1},
    {&__pyx_n_s_originalvars, __pyx_k_originalvars, sizeof(__pyx_k_originalvars), 0, 0, 1, 1},
    {&__pyx_n_s_otherdata, __pyx_k_otherdata, sizeof(__pyx_k_otherdata), 0, 0, 1, 1},
    {&__pyx_n_s_otherpartialdec, __pyx_k_otherpartialdec, sizeof(__pyx_k_otherpartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_otherpartialdecs, __pyx_k_otherpartialdecs, sizeof(__pyx_k_otherpartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_otherpartialdecs_element, __pyx_k_otherpartialdecs_element, sizeof(__pyx_k_otherpartialdecs_element), 0, 0, 1, 1},
    {&__pyx_n_s_otherpartialdecs_ptr, __pyx_k_otherpartialdecs_ptr, sizeof(__pyx_k_otherpartialdecs_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_parents, __pyx_k_parents, sizeof(__pyx_k_parents), 0, 0, 1, 1},
    {&__pyx_n_s_partialdec, __pyx_k_partialdec, sizeof(__pyx_k_partialdec), 0, 0, 1, 1},
    {&__pyx_n_s_partialdecIsNoDuplicateOfPartial, __pyx_k_partialdecIsNoDuplicateOfPartial, sizeof(__pyx_k_partialdecIsNoDuplicateOfPartial), 0, 0, 1, 1},
    {&__pyx_n_s_partialdecindex, __pyx_k_partialdecindex, sizeof(__pyx_k_partialdecindex), 0, 0, 1, 1},
    {&__pyx_n_s_partialdecs, __pyx_k_partialdecs, sizeof(__pyx_k_partialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_partialdecs_element, __pyx_k_partialdecs_element, sizeof(__pyx_k_partialdecs_element), 0, 0, 1, 1},
    {&__pyx_n_s_partialdecs_ptr, __pyx_k_partialdecs_ptr, sizeof(__pyx_k_partialdecs_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_partition, __pyx_k_partition, sizeof(__pyx_k_partition), 0, 0, 1, 1},
    {&__pyx_n_s_partitionIndex, __pyx_k_partitionIndex, sizeof(__pyx_k_partitionIndex), 0, 0, 1, 1},
    {&__pyx_n_s_pathlib, __pyx_k_pathlib, sizeof(__pyx_k_pathlib), 0, 0, 1, 1},
    {&__pyx_n_s_pct, __pyx_k_pct, sizeof(__pyx_k_pct), 0, 0, 1, 1},
    {&__pyx_n_s_pd, __pyx_k_pd, sizeof(__pyx_k_pd), 0, 0, 1, 1},
    {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
    {&__pyx_n_u_png, __pyx_k_png, sizeof(__pyx_k_png), 0, 1, 0, 1},
    {&__pyx_n_s_postprocessPartialdec, __pyx_k_postprocessPartialdec, sizeof(__pyx_k_postprocessPartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_postprocessingtime, __pyx_k_postprocessingtime, sizeof(__pyx_k_postprocessingtime), 0, 0, 1, 1},
    {&__pyx_kp_u_ppc_max_white, __pyx_k_ppc_max_white, sizeof(__pyx_k_ppc_max_white), 0, 1, 0, 0},
    {&__pyx_kp_u_ppc_max_white_with_aggregation_i, __pyx_k_ppc_max_white_with_aggregation_i, sizeof(__pyx_k_ppc_max_white_with_aggregation_i), 0, 1, 0, 0},
    {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
    {&__pyx_n_s_presolve, __pyx_k_presolve, sizeof(__pyx_k_presolve), 0, 0, 1, 1},
    {&__pyx_n_s_presolved, __pyx_k_presolved, sizeof(__pyx_k_presolved), 0, 0, 1, 1},
    {&__pyx_n_s_pricingSolver, __pyx_k_pricingSolver, sizeof(__pyx_k_pricingSolver), 0, 0, 1, 1},
    {&__pyx_n_s_pricing_solver_name, __pyx_k_pricing_solver_name, sizeof(__pyx_k_pricing_solver_name), 0, 0, 1, 1},
    {&__pyx_n_s_pricing_solvers, __pyx_k_pricing_solvers, sizeof(__pyx_k_pricing_solvers), 0, 0, 1, 1},
    {&__pyx_n_s_pricingprob, __pyx_k_pricingprob, sizeof(__pyx_k_pricingprob), 0, 0, 1, 1},
    {&__pyx_kp_u_pricingsolver_exactenabled, __pyx_k_pricingsolver_exactenabled, sizeof(__pyx_k_pricingsolver_exactenabled), 0, 1, 0, 0},
    {&__pyx_kp_u_pricingsolver_heurenabled, __pyx_k_pricingsolver_heurenabled, sizeof(__pyx_k_pricingsolver_heurenabled), 0, 1, 0, 0},
    {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
    {&__pyx_n_s_printStatistics, __pyx_k_printStatistics, sizeof(__pyx_k_printStatistics), 0, 0, 1, 1},
    {&__pyx_n_s_printVersion, __pyx_k_printVersion, sizeof(__pyx_k_printVersion), 0, 0, 1, 1},
    {&__pyx_n_s_priority, __pyx_k_priority, sizeof(__pyx_k_priority), 0, 0, 1, 1},
    {&__pyx_n_s_probnr, __pyx_k_probnr, sizeof(__pyx_k_probnr), 0, 0, 1, 1},
    {&__pyx_n_s_propagatePartialdec, __pyx_k_propagatePartialdec, sizeof(__pyx_k_propagatePartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_proxy, __pyx_k_proxy, sizeof(__pyx_k_proxy), 0, 0, 1, 1},
    {&__pyx_n_s_pyGCGCol, __pyx_k_pyGCGCol, sizeof(__pyx_k_pyGCGCol), 0, 0, 1, 1},
    {&__pyx_n_s_pyVar, __pyx_k_pyVar, sizeof(__pyx_k_pyVar), 0, 0, 1, 1},
    {&__pyx_n_s_pygcgopt_gcg, __pyx_k_pygcgopt_gcg, sizeof(__pyx_k_pygcgopt_gcg), 0, 0, 1, 1},
    {&__pyx_n_s_pygcgopt_util, __pyx_k_pygcgopt_util, sizeof(__pyx_k_pygcgopt_util), 0, 0, 1, 1},
    {&__pyx_n_s_pyscipopt_scip, __pyx_k_pyscipopt_scip, sizeof(__pyx_k_pyscipopt_scip), 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_ConsClassifier, __pyx_k_pyx_unpickle_ConsClassifier, sizeof(__pyx_k_pyx_unpickle_ConsClassifier), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_Detector, __pyx_k_pyx_unpickle_Detector, sizeof(__pyx_k_pyx_unpickle_Detector), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF, __pyx_k_pyx_unpickle_PY_CONS_DECOMPINF, sizeof(__pyx_k_pyx_unpickle_PY_CONS_DECOMPINF), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA, __pyx_k_pyx_unpickle_PY_GCG_PRICINGSTA, sizeof(__pyx_k_pyx_unpickle_PY_GCG_PRICINGSTA), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_PY_USERGIVEN, __pyx_k_pyx_unpickle_PY_USERGIVEN, sizeof(__pyx_k_pyx_unpickle_PY_USERGIVEN), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO, __pyx_k_pyx_unpickle_PY_VAR_DECOMPINFO, sizeof(__pyx_k_pyx_unpickle_PY_VAR_DECOMPINFO), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_PricingSolver, __pyx_k_pyx_unpickle_PricingSolver, sizeof(__pyx_k_pyx_unpickle_PricingSolver), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_Score, __pyx_k_pyx_unpickle_Score, sizeof(__pyx_k_pyx_unpickle_Score), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_unpickle_VarClassifier, __pyx_k_pyx_unpickle_VarClassifier, sizeof(__pyx_k_pyx_unpickle_VarClassifier), 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_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
    {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
    {&__pyx_n_s_read_bytes, __pyx_k_read_bytes, sizeof(__pyx_k_read_bytes), 0, 0, 1, 1},
    {&__pyx_n_s_read_text, __pyx_k_read_text, sizeof(__pyx_k_read_text), 0, 0, 1, 1},
    {&__pyx_n_s_redcost, __pyx_k_redcost, sizeof(__pyx_k_redcost), 0, 0, 1, 1},
    {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
    {&__pyx_n_s_reduceClasses, __pyx_k_reduceClasses, sizeof(__pyx_k_reduceClasses), 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_refineToBlocks, __pyx_k_refineToBlocks, sizeof(__pyx_k_refineToBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_refineToMaster, __pyx_k_refineToMaster, sizeof(__pyx_k_refineToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_removeAncestorID, __pyx_k_removeAncestorID, sizeof(__pyx_k_removeAncestorID), 0, 0, 1, 1},
    {&__pyx_n_s_removeEmptyClasses, __pyx_k_removeEmptyClasses, sizeof(__pyx_k_removeEmptyClasses), 0, 0, 1, 1},
    {&__pyx_n_s_removeMastercons, __pyx_k_removeMastercons, sizeof(__pyx_k_removeMastercons), 0, 0, 1, 1},
    {&__pyx_n_s_rep_id, __pyx_k_rep_id, sizeof(__pyx_k_rep_id), 0, 0, 1, 1},
    {&__pyx_n_s_repid, __pyx_k_repid, sizeof(__pyx_k_repid), 0, 0, 1, 1},
    {&__pyx_n_s_repr_png, __pyx_k_repr_png, sizeof(__pyx_k_repr_png), 0, 0, 1, 1},
    {&__pyx_n_s_repr_svg, __pyx_k_repr_svg, sizeof(__pyx_k_repr_svg), 0, 0, 1, 1},
    {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
    {&__pyx_n_u_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 1, 0, 1},
    {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1},
    {&__pyx_n_s_scip, __pyx_k_scip, sizeof(__pyx_k_scip), 0, 0, 1, 1},
    {&__pyx_n_s_score, __pyx_k_score, sizeof(__pyx_k_score), 0, 0, 1, 1},
    {&__pyx_n_s_scorecalculate, __pyx_k_scorecalculate, sizeof(__pyx_k_scorecalculate), 0, 0, 1, 1},
    {&__pyx_n_s_scorefree, __pyx_k_scorefree, sizeof(__pyx_k_scorefree), 0, 0, 1, 1},
    {&__pyx_n_s_scorename, __pyx_k_scorename, sizeof(__pyx_k_scorename), 0, 0, 1, 1},
    {&__pyx_n_s_scores, __pyx_k_scores, sizeof(__pyx_k_scores), 0, 0, 1, 1},
    {&__pyx_n_u_scorevalue, __pyx_k_scorevalue, sizeof(__pyx_k_scorevalue), 0, 1, 0, 1},
    {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
    {&__pyx_kp_s_self__scip_self__valid_cannot_be, __pyx_k_self__scip_self__valid_cannot_be, sizeof(__pyx_k_self__scip_self__valid_cannot_be), 0, 0, 1, 0},
    {&__pyx_kp_s_self_consPartition_cannot_be_con, __pyx_k_self_consPartition_cannot_be_con, sizeof(__pyx_k_self_consPartition_cannot_be_con), 0, 0, 1, 0},
    {&__pyx_kp_s_self_gcg_col_cannot_be_converted, __pyx_k_self_gcg_col_cannot_be_converted, sizeof(__pyx_k_self_gcg_col_cannot_be_converted), 0, 0, 1, 0},
    {&__pyx_kp_s_self_thisptr_cannot_be_converted, __pyx_k_self_thisptr_cannot_be_converted, sizeof(__pyx_k_self_thisptr_cannot_be_converted), 0, 0, 1, 0},
    {&__pyx_kp_s_self_varPartition_cannot_be_conv, __pyx_k_self_varPartition_cannot_be_conv, sizeof(__pyx_k_self_varPartition_cannot_be_conv), 0, 0, 1, 0},
    {&__pyx_n_s_setAncestorList, __pyx_k_setAncestorList, sizeof(__pyx_k_setAncestorList), 0, 0, 1, 1},
    {&__pyx_n_s_setBoolParam, __pyx_k_setBoolParam, sizeof(__pyx_k_setBoolParam), 0, 0, 1, 1},
    {&__pyx_n_s_setClassDecompInfo, __pyx_k_setClassDecompInfo, sizeof(__pyx_k_setClassDecompInfo), 0, 0, 1, 1},
    {&__pyx_n_s_setClassDescription, __pyx_k_setClassDescription, sizeof(__pyx_k_setClassDescription), 0, 0, 1, 1},
    {&__pyx_n_s_setClassName, __pyx_k_setClassName, sizeof(__pyx_k_setClassName), 0, 0, 1, 1},
    {&__pyx_n_s_setConsPartitionStatistics, __pyx_k_setConsPartitionStatistics, sizeof(__pyx_k_setConsPartitionStatistics), 0, 0, 1, 1},
    {&__pyx_n_s_setConsToMaster, __pyx_k_setConsToMaster, sizeof(__pyx_k_setConsToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorClockTimes, __pyx_k_setDetectorClockTimes, sizeof(__pyx_k_setDetectorClockTimes), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorEnabled, __pyx_k_setDetectorEnabled, sizeof(__pyx_k_setDetectorEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorFinished, __pyx_k_setDetectorFinished, sizeof(__pyx_k_setDetectorFinished), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorFinishedOrig, __pyx_k_setDetectorFinishedOrig, sizeof(__pyx_k_setDetectorFinishedOrig), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorFinishingEnabled, __pyx_k_setDetectorFinishingEnabled, sizeof(__pyx_k_setDetectorFinishingEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorPostprocessingEnabled, __pyx_k_setDetectorPostprocessingEnabled, sizeof(__pyx_k_setDetectorPostprocessingEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setDetectorPropagated, __pyx_k_setDetectorPropagated, sizeof(__pyx_k_setDetectorPropagated), 0, 0, 1, 1},
    {&__pyx_n_s_setFinishedByFinisher, __pyx_k_setFinishedByFinisher, sizeof(__pyx_k_setFinishedByFinisher), 0, 0, 1, 1},
    {&__pyx_n_s_setFinishedByFinisherOrig, __pyx_k_setFinishedByFinisherOrig, sizeof(__pyx_k_setFinishedByFinisherOrig), 0, 0, 1, 1},
    {&__pyx_n_s_setGCGSeparating, __pyx_k_setGCGSeparating, sizeof(__pyx_k_setGCGSeparating), 0, 0, 1, 1},
    {&__pyx_n_s_setNBlocks, __pyx_k_setNBlocks, sizeof(__pyx_k_setNBlocks), 0, 0, 1, 1},
    {&__pyx_n_s_setParamAggressive, __pyx_k_setParamAggressive, sizeof(__pyx_k_setParamAggressive), 0, 0, 1, 1},
    {&__pyx_n_s_setParamDefault, __pyx_k_setParamDefault, sizeof(__pyx_k_setParamDefault), 0, 0, 1, 1},
    {&__pyx_n_s_setParamFast, __pyx_k_setParamFast, sizeof(__pyx_k_setParamFast), 0, 0, 1, 1},
    {&__pyx_n_s_setPctConssFromFreeVector, __pyx_k_setPctConssFromFreeVector, sizeof(__pyx_k_setPctConssFromFreeVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPctConssToBlockVector, __pyx_k_setPctConssToBlockVector, sizeof(__pyx_k_setPctConssToBlockVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPctConssToBorderVector, __pyx_k_setPctConssToBorderVector, sizeof(__pyx_k_setPctConssToBorderVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPctVarsFromFreeVector, __pyx_k_setPctVarsFromFreeVector, sizeof(__pyx_k_setPctVarsFromFreeVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPctVarsToBlockVector, __pyx_k_setPctVarsToBlockVector, sizeof(__pyx_k_setPctVarsToBlockVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPctVarsToBorderVector, __pyx_k_setPctVarsToBorderVector, sizeof(__pyx_k_setPctVarsToBorderVector), 0, 0, 1, 1},
    {&__pyx_n_s_setPricingSolverEnabled, __pyx_k_setPricingSolverEnabled, sizeof(__pyx_k_setPricingSolverEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setPricingSolverExactEnabled, __pyx_k_setPricingSolverExactEnabled, sizeof(__pyx_k_setPricingSolverExactEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setPricingSolverHeuristicEnabled, __pyx_k_setPricingSolverHeuristicEnabled, sizeof(__pyx_k_setPricingSolverHeuristicEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setStemsFromOrig, __pyx_k_setStemsFromOrig, sizeof(__pyx_k_setStemsFromOrig), 0, 0, 1, 1},
    {&__pyx_n_s_setTranslatedpartialdecid, __pyx_k_setTranslatedpartialdecid, sizeof(__pyx_k_setTranslatedpartialdecid), 0, 0, 1, 1},
    {&__pyx_n_s_setUsergiven, __pyx_k_setUsergiven, sizeof(__pyx_k_setUsergiven), 0, 0, 1, 1},
    {&__pyx_n_s_setVarClassifierEnabled, __pyx_k_setVarClassifierEnabled, sizeof(__pyx_k_setVarClassifierEnabled), 0, 0, 1, 1},
    {&__pyx_n_s_setVarPartitionStatistics, __pyx_k_setVarPartitionStatistics, sizeof(__pyx_k_setVarPartitionStatistics), 0, 0, 1, 1},
    {&__pyx_n_s_setVarToBlockId, __pyx_k_setVarToBlockId, sizeof(__pyx_k_setVarToBlockId), 0, 0, 1, 1},
    {&__pyx_n_s_setVarToLinking, __pyx_k_setVarToLinking, sizeof(__pyx_k_setVarToLinking), 0, 0, 1, 1},
    {&__pyx_n_s_setVarToMaster, __pyx_k_setVarToMaster, sizeof(__pyx_k_setVarToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_setVarToStairlinking, __pyx_k_setVarToStairlinking, sizeof(__pyx_k_setVarToStairlinking), 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_n_s_setting, __pyx_k_setting, sizeof(__pyx_k_setting), 0, 0, 1, 1},
    {&__pyx_n_s_shortname, __pyx_k_shortname, sizeof(__pyx_k_shortname), 0, 0, 1, 1},
    {&__pyx_n_s_shouldCompletedByConsToMaster, __pyx_k_shouldCompletedByConsToMaster, sizeof(__pyx_k_shouldCompletedByConsToMaster), 0, 0, 1, 1},
    {&__pyx_n_s_showVisualization, __pyx_k_showVisualization, sizeof(__pyx_k_showVisualization), 0, 0, 1, 1},
    {&__pyx_n_s_skip, __pyx_k_skip, sizeof(__pyx_k_skip), 0, 0, 1, 1},
    {&__pyx_n_s_solve, __pyx_k_solve, sizeof(__pyx_k_solve), 0, 0, 1, 1},
    {&__pyx_n_s_solveHeuristic, __pyx_k_solveHeuristic, sizeof(__pyx_k_solveHeuristic), 0, 0, 1, 1},
    {&__pyx_n_s_solvername, __pyx_k_solvername, sizeof(__pyx_k_solvername), 0, 0, 1, 1},
    {&__pyx_n_s_sort, __pyx_k_sort, sizeof(__pyx_k_sort), 0, 0, 1, 1},
    {&__pyx_n_s_sortFinishedForScore, __pyx_k_sortFinishedForScore, sizeof(__pyx_k_sortFinishedForScore), 0, 0, 1, 1},
    {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
    {&__pyx_kp_s_src_pygcgopt_consclassifier_pxi, __pyx_k_src_pygcgopt_consclassifier_pxi, sizeof(__pyx_k_src_pygcgopt_consclassifier_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_k_src_pygcgopt_decomposition_pxi, sizeof(__pyx_k_src_pygcgopt_decomposition_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_k_src_pygcgopt_detector_pxi, sizeof(__pyx_k_src_pygcgopt_detector_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_k_src_pygcgopt_detprobdata_pxi, sizeof(__pyx_k_src_pygcgopt_detprobdata_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_k_src_pygcgopt_gcg_pyx, sizeof(__pyx_k_src_pygcgopt_gcg_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_k_src_pygcgopt_partition_pxi, sizeof(__pyx_k_src_pygcgopt_partition_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_k_src_pygcgopt_pricing_solver_pxi, sizeof(__pyx_k_src_pygcgopt_pricing_solver_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_score_pxi, __pyx_k_src_pygcgopt_score_pxi, sizeof(__pyx_k_src_pygcgopt_score_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_pygcgopt_varclassifier_pxi, __pyx_k_src_pygcgopt_varclassifier_pxi, sizeof(__pyx_k_src_pygcgopt_varclassifier_pxi), 0, 0, 1, 0},
    {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
    {&__pyx_n_u_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 1, 0, 1},
    {&__pyx_n_s_str_conversion, __pyx_k_str_conversion, sizeof(__pyx_k_str_conversion), 0, 0, 1, 1},
    {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
    {&__pyx_kp_u_strong_decomposition_score, __pyx_k_strong_decomposition_score, sizeof(__pyx_k_strong_decomposition_score), 0, 1, 0, 0},
    {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
    {&__pyx_n_u_svg, __pyx_k_svg, sizeof(__pyx_k_svg), 0, 1, 0, 1},
    {&__pyx_n_s_tempfile, __pyx_k_tempfile, sizeof(__pyx_k_tempfile), 0, 0, 1, 1},
    {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
    {&__pyx_n_s_translatePartialdecs, __pyx_k_translatePartialdecs, sizeof(__pyx_k_translatePartialdecs), 0, 0, 1, 1},
    {&__pyx_n_s_translatingtime, __pyx_k_translatingtime, sizeof(__pyx_k_translatingtime), 0, 0, 1, 1},
    {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1},
    {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
    {&__pyx_n_s_updateSolver, __pyx_k_updateSolver, sizeof(__pyx_k_updateSolver), 0, 0, 1, 1},
    {&__pyx_n_s_use_setstate, __pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 0, 1, 1},
    {&__pyx_n_s_usefulrecall, __pyx_k_usefulrecall, sizeof(__pyx_k_usefulrecall), 0, 0, 1, 1},
    {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1},
    {&__pyx_n_s_vals, __pyx_k_vals, sizeof(__pyx_k_vals), 0, 0, 1, 1},
    {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
    {&__pyx_n_s_var, __pyx_k_var, sizeof(__pyx_k_var), 0, 0, 1, 1},
    {&__pyx_n_s_varIndex, __pyx_k_varIndex, sizeof(__pyx_k_varIndex), 0, 0, 1, 1},
    {&__pyx_n_s_varbndschanged, __pyx_k_varbndschanged, sizeof(__pyx_k_varbndschanged), 0, 0, 1, 1},
    {&__pyx_n_s_varclasseslinking, __pyx_k_varclasseslinking, sizeof(__pyx_k_varclasseslinking), 0, 0, 1, 1},
    {&__pyx_n_s_varclassesmaster, __pyx_k_varclassesmaster, sizeof(__pyx_k_varclassesmaster), 0, 0, 1, 1},
    {&__pyx_n_s_varclassifier, __pyx_k_varclassifier, sizeof(__pyx_k_varclassifier), 0, 0, 1, 1},
    {&__pyx_n_s_varclassifier_name, __pyx_k_varclassifier_name, sizeof(__pyx_k_varclassifier_name), 0, 0, 1, 1},
    {&__pyx_n_s_varclassifiername, __pyx_k_varclassifiername, sizeof(__pyx_k_varclassifiername), 0, 0, 1, 1},
    {&__pyx_n_s_varclassifiers, __pyx_k_varclassifiers, sizeof(__pyx_k_varclassifiers), 0, 0, 1, 1},
    {&__pyx_n_s_variables, __pyx_k_variables, sizeof(__pyx_k_variables), 0, 0, 1, 1},
    {&__pyx_n_s_varid, __pyx_k_varid, sizeof(__pyx_k_varid), 0, 0, 1, 1},
    {&__pyx_n_s_varobjschanged, __pyx_k_varobjschanged, sizeof(__pyx_k_varobjschanged), 0, 0, 1, 1},
    {&__pyx_n_s_varpartitioncollection, __pyx_k_varpartitioncollection, sizeof(__pyx_k_varpartitioncollection), 0, 0, 1, 1},
    {&__pyx_n_s_varpartitioncollection_element, __pyx_k_varpartitioncollection_element, sizeof(__pyx_k_varpartitioncollection_element), 0, 0, 1, 1},
    {&__pyx_n_s_varpartitioncollection_ptr, __pyx_k_varpartitioncollection_ptr, sizeof(__pyx_k_varpartitioncollection_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_varpatitionptr, __pyx_k_varpatitionptr, sizeof(__pyx_k_varpatitionptr), 0, 0, 1, 1},
    {&__pyx_n_s_vars, __pyx_k_vars, sizeof(__pyx_k_vars), 0, 0, 1, 1},
    {&__pyx_n_u_vis, __pyx_k_vis, sizeof(__pyx_k_vis), 0, 1, 0, 1},
    {&__pyx_kp_u_vis_gp, __pyx_k_vis_gp, sizeof(__pyx_k_vis_gp), 0, 1, 0, 0},
    {&__pyx_n_s_weakref, __pyx_k_weakref, sizeof(__pyx_k_weakref), 0, 0, 1, 1},
    {&__pyx_n_s_with_suffix, __pyx_k_with_suffix, sizeof(__pyx_k_with_suffix), 0, 0, 1, 1},
    {&__pyx_n_s_workonpartialdec, __pyx_k_workonpartialdec, sizeof(__pyx_k_workonpartialdec), 0, 0, 1, 1},
    {&__pyx_n_s_writeAllDecomps, __pyx_k_writeAllDecomps, sizeof(__pyx_k_writeAllDecomps), 0, 0, 1, 1},
    {0, 0, 0, 0, 0, 0, 0}
  };
  return __Pyx_InitStrings(__pyx_string_tab);
}
/* #### Code section: cached_builtins ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 58, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 66, __pyx_L1_error)
  __pyx_builtin_Warning = __Pyx_GetBuiltinName(__pyx_n_s_Warning); if (!__pyx_builtin_Warning) __PYX_ERR(1, 7, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 1403, __pyx_L1_error)
  __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(3, 32, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(4, 83, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(4, 180, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(5, 68, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "src/pygcgopt/pricing_solver.pxi":74
 *     py_pricingprob = GCGPricingModel.create(pricingprob)
 *     result_dict = py_pricing_solver.solve(py_pricingprob, probnr, dualsolconv)
 *     lowerbound[0] = result_dict.get("lowerbound", 0)             # <<<<<<<<<<<<<<
 *     status[0] = result_dict.get("status", <GCG_PRICINGSTATUS>status[0])
 *     return SCIP_OKAY
 */
  __pyx_tuple_ = PyTuple_Pack(2, __pyx_n_u_lowerbound, __pyx_int_0); if (unlikely(!__pyx_tuple_)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "src/pygcgopt/partition.pxi":7
 *     cdef create(ConsPartition* consPartition, DetProbData detProbData):
 *         if consPartition == NULL:
 *             raise Warning("cannot create ConsPart with ConsPartition* == NULL")             # <<<<<<<<<<<<<<
 *         new_ConsPart = ConsPart()
 *         new_ConsPart.consPartition = consPartition
 */
  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_ConsPart_with_Cons); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);

  /* "src/pygcgopt/partition.pxi":206
 *     cdef create(VarPartition* varPartition, DetProbData detProbData):
 *         if varPartition == NULL:
 *             raise Warning("cannot create VarPart with VarPartition* == NULL")             # <<<<<<<<<<<<<<
 *         new_VarPart = VarPart()
 *         new_VarPart.varPartition = varPartition
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_VarPart_with_VarPa); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "src/pygcgopt/decomposition.pxi":27
 *     cdef create(PARTIALDECOMP* thisptr):
 *         if thisptr == NULL:
 *             raise Warning("cannot create PartialDecomposition with PARTIALDECOMP* == NULL")             # <<<<<<<<<<<<<<
 *         new_PartialDecomposition = PartialDecomposition()
 *         new_PartialDecomposition.thisptr = thisptr
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_PartialDecompositi); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(2, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "src/pygcgopt/decomposition.pxi":1406
 * 
 *         if format not in self._visualizations:
 *             with tempfile.TemporaryDirectory() as td:             # <<<<<<<<<<<<<<
 *                 temp_path = Path(td)
 * 
 */
  __pyx_tuple__7 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(2, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "src/pygcgopt/detprobdata.pxi":7
 *     cdef create(DETPROBDATA* thisptr):
 *         if thisptr == NULL:
 *             raise Warning("cannot create DetProbData with DETPROBDATA* == NULL")             # <<<<<<<<<<<<<<
 *         new_DetProbData = DetProbData()
 *         new_DetProbData.thisptr = thisptr
 */
  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_DetProbData_with_D); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(9, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "pygcgopt/gcg.pyx":370
 *         """
 *         if len(decchar) != 1:
 *             raise ValueError("Length of value for 'decchar' must be 1")             # <<<<<<<<<<<<<<
 * 
 *         c_detectorname = str_conversion(detectorname)
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_Length_of_value_for_decchar_must); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(4, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "pygcgopt/gcg.pyx":518
 *         """
 *         if scip == NULL:
 *             raise Warning("cannot create Model with SCIP* == NULL")             # <<<<<<<<<<<<<<
 *         model = GCGPricingModel(createscip=False)
 *         model._scip = scip
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_Model_with_SCIP_NU); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(4, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "pygcgopt/gcg.pyx":584
 *     cdef create(GCG_COL* gcgcol):
 *         if gcgcol == NULL:
 *             raise Warning("cannot create Column with GCG_COL* == NULL")             # <<<<<<<<<<<<<<
 *         col = GCGColumn()
 *         col.gcg_col = gcgcol
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_u_cannot_create_Column_with_GCG_CO); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(4, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum not in (0xdad04ef, 0x67e9880, 0xf7f977a):             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xdad04ef, 0x67e9880, 0xf7f977a) = (detectorname, model))" % __pyx_checksum
 */
  __pyx_tuple__15 = PyTuple_Pack(3, __pyx_int_229442799, __pyx_int_108959872, __pyx_int_260020090); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
  __pyx_tuple__16 = PyTuple_Pack(3, __pyx_int_160002037, __pyx_int_141772857, __pyx_int_128380825); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);
  __pyx_tuple__17 = PyTuple_Pack(3, __pyx_int_104261058, __pyx_int_24087813, __pyx_int_193403919); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
  __pyx_tuple__18 = PyTuple_Pack(3, __pyx_int_76513566, __pyx_int_37557029, __pyx_int_248330301); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
  __pyx_tuple__19 = PyTuple_Pack(3, __pyx_int_238750788, __pyx_int_228825662, __pyx_int_222419149); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(5, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "src/pygcgopt/detector.pxi":6
 *     cdef public str detectorname
 * 
 *     def freeDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of detector'''
 *         pass
 */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_freeDetector, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 6, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":10
 *         pass
 * 
 *     def initDetector(self):             # <<<<<<<<<<<<<<
 *         '''initializes detector'''
 *         pass
 */
  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_initDetector, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 10, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":14
 *         pass
 * 
 *     def exitDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls exit method of detector'''
 *         pass
 */
  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_exitDetector, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 14, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":18
 *         pass
 * 
 *     def propagatePartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''refines a partial decomposition inside detection loop'''
 *         return {}
 */
  __pyx_tuple__25 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_detprobdata, __pyx_n_s_workonpartialdec); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_propagatePartialdec, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 18, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":22
 *         return {}
 * 
 *     def finishPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''completes a partial decomposition when called in detection loop'''
 *         return {}
 */
  __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_finishPartialdec, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 22, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":26
 *         return {}
 * 
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''postprocess a complete decomposition, called after detection loop'''
 *         return {}
 */
  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_postprocessPartialdec, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 26, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":30
 *         return {}
 * 
 *     def setParamAggressive(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting aggressive is chosen'''
 *         pass
 */
  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_setParamAggressive, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 30, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":34
 *         pass
 * 
 *     def setParamDefault(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting default is chosen'''
 *         pass
 */
  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_setParamDefault, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 34, __pyx_L1_error)

  /* "src/pygcgopt/detector.pxi":38
 *         pass
 * 
 *     def setParamFast(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting fast is chosen'''
 *         pass
 */
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detector_pxi, __pyx_n_s_setParamFast, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 38, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_tuple__32 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_state, __pyx_n_s_dict_2, __pyx_n_s_use_setstate); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Detector__set_state(self, __pyx_state)
 */
  __pyx_tuple__34 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);
  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":7
 *     cdef public str solvername
 * 
 *     def freeSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_freeSolver, 7, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(7, 7, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":10
 *         pass
 * 
 *     def initSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_initSolver, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(7, 10, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":13
 *         pass
 * 
 *     def exitSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_exitSolver, 13, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(7, 13, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":16
 *         pass
 * 
 *     def initSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_initSolution, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(7, 16, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":19
 *         pass
 * 
 *     def exitSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_exitSolution, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(7, 19, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":22
 *         pass
 * 
 *     def updateSolver(self, pricingprob, probnr, varobjschanged, varbndschanged, consschanged):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_tuple__41 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_pricingprob, __pyx_n_s_probnr, __pyx_n_s_varobjschanged, __pyx_n_s_varbndschanged, __pyx_n_s_consschanged); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(7, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);
  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_updateSolver, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(7, 22, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":25
 *         pass
 * 
 *     def solve(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_pricingprob, __pyx_n_s_probnr, __pyx_n_s_dualsolconv); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(7, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);
  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_solve, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(7, 25, __pyx_L1_error)

  /* "src/pygcgopt/pricing_solver.pxi":28
 *         return {}
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_pricing_solver_pxi, __pyx_n_s_solveHeuristic, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(7, 28, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PricingSolver__set_state(self, __pyx_state)
 */
  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "src/pygcgopt/score.pxi":7
 *     cdef public str scorename
 * 
 *     def scorefree(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of score'''
 *         pass
 */
  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_score_pxi, __pyx_n_s_scorefree, 7, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(8, 7, __pyx_L1_error)

  /* "src/pygcgopt/score.pxi":11
 *         pass
 * 
 *     def scorecalculate(self, partialdec):             # <<<<<<<<<<<<<<
 *         '''calls calculate method of score'''
 *         return {}
 */
  __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_partialdec); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(8, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);
  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_score_pxi, __pyx_n_s_scorecalculate, 11, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(8, 11, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Score__set_state(self, __pyx_state)
 */
  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":13
 *         return new_ConsPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */
  __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_classindex); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassDescription, 13, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(1, 13, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":23
 *         return self.consPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */
  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassName, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(1, 23, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":33
 *         return self.consPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the constraint partition
 * 
 */
  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getName, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(1, 33, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":41
 *         return self.consPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the constraint partition
 * 
 */
  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNClasses, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(1, 41, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":49
 *         return self.consPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */
  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_removeEmptyClasses, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(1, 49, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":57
 *         return self.consPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */
  __pyx_tuple__59 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_classindex, __pyx_n_s_desc, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_setClassDescription, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(1, 57, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":68
 *         self.consPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */
  __pyx_tuple__61 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_classindex, __pyx_n_s_name, __pyx_n_s_c_name); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(1, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);
  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_setClassName, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(1, 68, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":79
 *         self.consPartition.setClassName(classindex, name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the constraint partition
 * 
 */
  __pyx_tuple__63 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_name, __pyx_n_s_desc, __pyx_n_s_decompInfo, __pyx_n_s_c_name, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);
  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_addClass, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(1, 79, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":95
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignConsToClass(self, Constraint cons, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a constraint to the class corresponding to the classindex
 * 
 */
  __pyx_tuple__65 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_classindex, __pyx_n_s_cpp_consindex); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(1, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);
  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_assignConsToClass, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(1, 95, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":106
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)
 * 
 *     def getAllSubsets(self, both, only_master, only_pricing):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */
  __pyx_tuple__67 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_both, __pyx_n_s_only_master, __pyx_n_s_only_pricing); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);
  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getAllSubsets, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(1, 106, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":120
 *         return self.consPartition.getAllSubsets(both, only_master, only_pricing)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */
  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassDecompInfo, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(1, 120, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":130
 *         return self.consPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a constraint is assigned to
 * 
 */
  __pyx_tuple__70 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_cpp_consindex); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(1, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);
  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_getClassNameOfCons, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(1, 130, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":141
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')
 * 
 *     def getClassOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a constraint is assigned to
 * 
 */
  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_getClassOfCons, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(1, 141, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":152
 *         return self.consPartition.getClassOfCons(cpp_consindex)
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints of the constraint partition
 * 
 */
  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNConss, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(1, 152, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":160
 *         return self.consPartition.getNConss()
 * 
 *     def getNConssOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of constraints that are assigned to the classes
 * 
 */
  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNConssOfClasses, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(1, 160, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":168
 *         return self.consPartition.getNConssOfClasses()
 * 
 *     def isConsClassified(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is already assigned to a class
 * 
 */
  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_isConsClassified, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(1, 168, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":179
 *         return self.consPartition.isConsClassified(cpp_consindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns constraint partition with reduced number of classes
 * 
 */
  __pyx_tuple__76 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_maxNumberOfClasses, __pyx_n_s_result); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);
  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_reduceClasses, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(1, 179, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":190
 *         return ConsPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */
  __pyx_tuple__78 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_classindex, __pyx_n_s_decompInfo); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(1, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);
  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_setClassDecompInfo, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(1, 190, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":212
 *         return new_VarPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */
  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassDescription, 212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(1, 212, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":222
 *         return self.varPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */
  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassName, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(1, 222, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":232
 *         return self.varPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the variable partition
 * 
 */
  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getName, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(1, 232, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":240
 *         return self.varPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the variable partition
 * 
 */
  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNClasses, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(1, 240, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":248
 *         return self.varPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */
  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_removeEmptyClasses, 248, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(1, 248, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":256
 *         return self.varPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */
  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_setClassDescription, 256, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(1, 256, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":267
 *         self.varPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */
  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_setClassName, 267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(1, 267, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":278
 *         self.varPartition.setClassName(classindex, c_name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the variable partition
 * 
 */
  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_addClass, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(1, 278, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":294
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignVarToClass(self, Variable var, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a variable to the class corresponding to the classindex
 * 
 */
  __pyx_tuple__90 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_classindex, __pyx_n_s_cpp_varindex); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(1, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);
  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 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_src_pygcgopt_partition_pxi, __pyx_n_s_assignVarToClass, 294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(1, 294, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":305
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)
 * 
 *     def getAllSubsets(self, all, linking, master, block):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */
  __pyx_tuple__92 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_all, __pyx_n_s_linking, __pyx_n_s_master, __pyx_n_s_block); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);
  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(5, 0, 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_src_pygcgopt_partition_pxi, __pyx_n_s_getAllSubsets, 305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":321
 *         return self.varPartition.getAllSubsets(all, linking, master, block)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */
  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassDecompInfo, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(1, 321, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":331
 *         return self.varPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a variable is assigned to
 * 
 */
  __pyx_tuple__95 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_cpp_varindex); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(1, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__95);
  __Pyx_GIVEREF(__pyx_tuple__95);
  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassNameOfVar, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(1, 331, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":342
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')
 * 
 *     def getClassOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a variable is assigned to
 * 
 */
  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getClassOfVar, 342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(1, 342, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":353
 *         return self.varPartition.getClassOfVar(cpp_varindex)
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables of the variable partition
 * 
 */
  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNVars, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(1, 353, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":361
 *         return self.varPartition.getNVars()
 * 
 *     def getNVarsOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of variables that are assigned to the classes
 * 
 */
  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_getNVarsOfClasses, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(1, 361, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":369
 *         return self.varPartition.getNVarsOfClasses()
 * 
 *     def isVarClassified(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns whether a variable is already assigned to a class
 * 
 */
  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_partition_pxi, __pyx_n_s_isVarClassified, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(1, 369, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":380
 *         return self.varPartition.isVarClassified(cpp_varindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns variable partition with reduced number of classes
 * 
 */
  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_reduceClasses, 380, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(1, 380, __pyx_L1_error)

  /* "src/pygcgopt/partition.pxi":391
 *         return VarPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */
  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_src_pygcgopt_partition_pxi, __pyx_n_s_setClassDecompInfo, 391, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(1, 391, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":35
 *         return new_PartialDecomposition
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 */
  __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_copy_2, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(2, 35, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":38
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return copy(self)
 * 
 */
  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_copy, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(2, 38, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":59
 *         self.thisptr.setSelected(cpp_selected)
 * 
 *     def addBlock(self):             # <<<<<<<<<<<<<<
 *         """adds a new block
 * 
 */
  __pyx_tuple__107 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_result); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(2, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);
  __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addBlock, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(2, 59, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":67
 *         return result
 * 
 *     def assignOpenConssToMaster(self):             # <<<<<<<<<<<<<<
 *         """assigns open constraints to master
 *         """
 */
  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_assignOpenConssToMaster, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(2, 67, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":72
 *         self.thisptr.assignOpenConssToMaster()
 * 
 *     def isComplete(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is complete, i.e. it has no more open constraints and variables
 * 
 */
  __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isComplete, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(2, 72, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":80
 *         return result
 * 
 *     def isTrivial(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is considered to be trivial
 * 
 */
  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isTrivial, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(2, 80, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":91
 *         return result
 * 
 *     def getNBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blocks
 * 
 */
  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNBlocks, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(2, 91, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":99
 *         return result
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """gets the number of constraints
 * 
 */
  __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNConss, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(2, 99, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":107
 *         return result
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables
 * 
 */
  __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNVars, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(2, 107, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":115
 *         return result
 * 
 *     def getID(self):             # <<<<<<<<<<<<<<
 *         """gets the unique id of the partialdecomposition
 * 
 */
  __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getID, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(2, 115, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":123
 *         return result
 * 
 *     def getHashValue(self):             # <<<<<<<<<<<<<<
 *         """gets the calculated hash value of the partialdecomposition
 * 
 */
  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getHashValue, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(2, 123, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":131
 *         return result
 * 
 *     def getDetprobdata(self):             # <<<<<<<<<<<<<<
 *         """gets the corresponding detprobdata
 * 
 */
  __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getDetprobdata, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(2, 131, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":139
 *         return DetProbData.create(result)
 * 
 *     def fixConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """fixes a Constraint to the master constraints
 * 
 */
  __pyx_tuple__118 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_cons); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__118);
  __Pyx_GIVEREF(__pyx_tuple__118);
  __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConsToMaster, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(2, 139, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":147
 *         self.thisptr.fixConsToMaster(cons.scip_cons)
 * 
 *     def fixConssToMaster(self, conss):             # <<<<<<<<<<<<<<
 *         """fixes all constraints to the master constraints.
 * 
 */
  __pyx_tuple__120 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_conss, __pyx_n_s_cons); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__120);
  __Pyx_GIVEREF(__pyx_tuple__120);
  __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__120, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConssToMaster, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) __PYX_ERR(2, 147, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":160
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 *     def fixConsToBlockId(self, Constraint cons, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */
  __pyx_tuple__122 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_block_id); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__122);
  __Pyx_GIVEREF(__pyx_tuple__122);
  __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__122, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConsToBlockId, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) __PYX_ERR(2, 160, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":175
 *         self.thisptr.fixConsToBlock(cons.scip_cons, block_id)
 * 
 *     def fixConssToBlockId(self, conss, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */
  __pyx_tuple__124 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_conss, __pyx_n_s_block_id, __pyx_n_s_cons); if (unlikely(!__pyx_tuple__124)) __PYX_ERR(2, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__124);
  __Pyx_GIVEREF(__pyx_tuple__124);
  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__124, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConssToBlockId, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) __PYX_ERR(2, 175, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":207
 *     #        self.fixVarToBlockId(<Variable?>var, block_id)
 * 
 *     def fixConsToBlock(self, Constraint cons, object block):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */
  __pyx_tuple__126 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_block, __pyx_n_s_i, __pyx_n_s_block_id); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(2, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__126);
  __Pyx_GIVEREF(__pyx_tuple__126);
  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConsToBlock, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(2, 207, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":234
 *         return block_id
 * 
 *     def fixConssToBlock(self, conss, object block):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */
  __pyx_tuple__128 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_conss, __pyx_n_s_block, __pyx_n_s_block_id, __pyx_n_s_cons); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__128);
  __Pyx_GIVEREF(__pyx_tuple__128);
  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixConssToBlock, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(2, 234, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":251
 *         return block_id
 * 
 *     def hasSetppccardMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing, set cover or cardinality constraints
 * 
 */
  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_hasSetppccardMaster, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) __PYX_ERR(2, 251, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":259
 *         return result
 * 
 *     def hasSetppcMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing or set cover constraints
 * 
 */
  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_hasSetppcMaster, 259, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(2, 259, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":267
 *         return result
 * 
 *     def hasSetppMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning or set packing constraints
 * 
 */
  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_hasSetppMaster, 267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(2, 267, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":275
 *         return result
 * 
 *     def getNOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of constraints that are opened (not assigned yet)
 * 
 */
  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNOpenconss, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(2, 275, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":283
 *         return result
 * 
 *     def getOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are opened (not assigned yet)
 * 
 */
  __pyx_tuple__134 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_det_prob_data, __pyx_n_s_consIndex); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__134);
  __Pyx_GIVEREF(__pyx_tuple__134);
  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getOpenconss, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(2, 283, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":292
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of linking variables
 * 
 */
  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNLinkingvars, 292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(2, 292, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":300
 *         return result
 * 
 *     def getLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to linking variables
 * 
 */
  __pyx_tuple__137 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_det_prob_data, __pyx_n_s_varIndex); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(2, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__137);
  __Pyx_GIVEREF(__pyx_tuple__137);
  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getLinkingvars, 300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(2, 300, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":309
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of master constraints
 * 
 */
  __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNMasterconss, 309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(2, 309, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":317
 *         return result
 * 
 *     def getMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to master variables
 * 
 */
  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getMasterconss, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(2, 317, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":326
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets number of master variables
 * 
 */
  __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNMastervars, 326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(2, 326, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":334
 *         return result
 * 
 *     def getMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to master variables (static variables)
 * 
 */
  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getMastervars, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(2, 334, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":343
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are opened (not assigned yet)
 * 
 */
  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNOpenvars, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(2, 343, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":351
 *         return result
 * 
 *     def getOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are opened (not assigned yet)
 * 
 */
  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getOpenvars, 351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(2, 351, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":360
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNStairlinkingvars(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to stairlinking variables of the specified block
 * 
 */
  __pyx_tuple__145 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_block_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(2, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__145);
  __Pyx_GIVEREF(__pyx_tuple__145);
  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNStairlinkingvars, 360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(2, 360, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":383
 *     #    return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to the specified block
 * 
 */
  __pyx_tuple__147 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_block_id, __pyx_n_s_result, __pyx_n_s_det_prob_data, __pyx_n_s_consIndex); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(2, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__147);
  __Pyx_GIVEREF(__pyx_tuple__147);
  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getConssForBlock, 383, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) __PYX_ERR(2, 383, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":393
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getConssForBlocks(self):             # <<<<<<<<<<<<<<
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 */
  __pyx_tuple__149 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_det_prob_data, __pyx_n_s_block, __pyx_n_s_consIndex); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(2, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__149);
  __Pyx_GIVEREF(__pyx_tuple__149);
  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getConssForBlocks, 393, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(2, 393, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":398
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 * 
 *     def getNVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to the specified block
 * 
 */
  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNVarsForBlock, 398, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(2, 398, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":407
 *         return result
 * 
 *     def getVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to the specified block
 * 
 */
  __pyx_tuple__152 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_block_id, __pyx_n_s_result, __pyx_n_s_det_prob_data, __pyx_n_s_varIndex); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(2, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__152);
  __Pyx_GIVEREF(__pyx_tuple__152);
  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__152, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getVarsForBlock, 407, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(2, 407, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":417
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def setConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """adds constraint to the master constraints, does not delete this constraint from list of open constraints
 * 
 */
  __pyx_tuple__154 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_det_prob_data); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(2, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__154);
  __Pyx_GIVEREF(__pyx_tuple__154);
  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__154, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setConsToMaster, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(2, 417, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":426
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def setVarToBlockId(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_tuple__156 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_block_id, __pyx_n_s_cpp_block_id, __pyx_n_s_det_prob_data); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(2, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__156);
  __Pyx_GIVEREF(__pyx_tuple__156);
  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setVarToBlockId, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(2, 426, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":438
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 * 
 *     def setVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_tuple__158 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_det_prob_data); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(2, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__158);
  __Pyx_GIVEREF(__pyx_tuple__158);
  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setVarToLinking, 438, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(2, 438, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":447
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables
 * 
 */
  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixVarToLinking, 447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(2, 447, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":456
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setVarToMaster, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(2, 456, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":467
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables
 * 
 */
  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixVarToMaster, 467, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) __PYX_ERR(2, 467, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":478
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToStairlinking(self, Variable var, int block1_id, int block2_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_tuple__163 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_block1_id, __pyx_n_s_block2_id, __pyx_n_s_cpp_block1_id, __pyx_n_s_cpp_block2_id, __pyx_n_s_det_prob_data); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__163);
  __Pyx_GIVEREF(__pyx_tuple__163);
  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setVarToStairlinking, 478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) __PYX_ERR(2, 478, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":494
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 * 
 *     def fixVarToStairlinking(self, Variable var, int firstblock_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables
 * 
 */
  __pyx_tuple__165 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_firstblock_id, __pyx_n_s_cpp_firstblock_id, __pyx_n_s_det_prob_data); if (unlikely(!__pyx_tuple__165)) __PYX_ERR(2, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__165);
  __Pyx_GIVEREF(__pyx_tuple__165);
  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_fixVarToStairlinking, 494, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) __PYX_ERR(2, 494, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":507
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 * 
 *     def isConsMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is a master constraint
 * 
 */
  __pyx_tuple__167 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_cons, __pyx_n_s_det_prob_data, __pyx_n_s_result); if (unlikely(!__pyx_tuple__167)) __PYX_ERR(2, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__167);
  __Pyx_GIVEREF(__pyx_tuple__167);
  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isConsMastercons, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) __PYX_ERR(2, 507, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":518
 *         return result
 * 
 *     def isConsOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is an open constraint
 * 
 */
  __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isConsOpencons, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(2, 518, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":529
 *         return result
 * 
 *     def isVarBlockvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is assigned to the block
 * 
 */
  __pyx_tuple__170 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_block_id, __pyx_n_s_det_prob_data, __pyx_n_s_result); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(2, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__170);
  __Pyx_GIVEREF(__pyx_tuple__170);
  __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarBlockvarOfBlock, 529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) __PYX_ERR(2, 529, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":541
 *         return result
 * 
 *     def isVarLinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a linking variable
 * 
 */
  __pyx_tuple__172 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_det_prob_data, __pyx_n_s_result); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(2, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__172);
  __Pyx_GIVEREF(__pyx_tuple__172);
  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarLinkingvar, 541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(2, 541, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":552
 *         return result
 * 
 *     def isVarMastervar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a master variable
 * 
 */
  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarMastervar, 552, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) __PYX_ERR(2, 552, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":563
 *         return result
 * 
 *     def isVarOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is an open variable
 * 
 */
  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarOpenvar, 563, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(2, 563, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":574
 *         return result
 * 
 *     def isVarStairlinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a stairlinking variable
 * 
 */
  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarStairlinkingvar, 574, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(2, 574, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":585
 *         return result
 * 
 *     def isVarStairlinkingvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """checks whether the var is a stairlinkingvar of a specified block
 * 
 */
  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__170, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isVarStairlinkingvarOfBlock, 585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(2, 585, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":597
 *         return result
 * 
 *     def deleteOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """deletes constraint from list of open constraints
 * 
 */
  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__154, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_deleteOpencons, 597, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(2, 597, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":606
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def deleteOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """deletes variable from the list of open variables
 * 
 */
  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__158, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_deleteOpenvar, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) __PYX_ERR(2, 606, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":615
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):             # <<<<<<<<<<<<<<
 *         self.thisptr.setUsergiven(value)
 * 
 */
  __pyx_tuple__180 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(2, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__180);
  __Pyx_GIVEREF(__pyx_tuple__180);
  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setUsergiven, 615, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(2, 615, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":618
 *         self.thisptr.setUsergiven(value)
 * 
 *     def getUsergiven(self):             # <<<<<<<<<<<<<<
 *         """gets the PY_USERGIVEN status of this partialdecs
 * 
 */
  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getUsergiven, 618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(2, 618, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":668
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 * 
 *     def addClockTime(self, double clocktime):             # <<<<<<<<<<<<<<
 *         """adds detection time of one detector
 * 
 */
  __pyx_tuple__183 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_clocktime, __pyx_n_s_cpp_clocktime); if (unlikely(!__pyx_tuple__183)) __PYX_ERR(2, 668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__183);
  __Pyx_GIVEREF(__pyx_tuple__183);
  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addClockTime, 668, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) __PYX_ERR(2, 668, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":676
 *         self.thisptr.addClockTime(cpp_clocktime)
 * 
 *     def addPctConssFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed constraints
 * 
 */
  __pyx_tuple__185 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_pct, __pyx_n_s_cpp_pct); if (unlikely(!__pyx_tuple__185)) __PYX_ERR(2, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__185);
  __Pyx_GIVEREF(__pyx_tuple__185);
  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctConssFromFree, 676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(2, 676, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":684
 *         self.thisptr.addPctConssFromFree(cpp_pct)
 * 
 *     def addPctConssToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to blocks
 * 
 */
  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctConssToBlock, 684, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(2, 684, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":692
 *         self.thisptr.addPctConssToBlock(cpp_pct)
 * 
 *     def addPctConssToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to border
 * 
 */
  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctConssToBorder, 692, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(2, 692, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":700
 *         self.thisptr.addPctConssToBorder(cpp_pct)
 * 
 *     def addPctVarsFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed variables
 * 
 */
  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctVarsFromFree, 700, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(2, 700, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":708
 *         self.thisptr.addPctVarsFromFree(cpp_pct)
 * 
 *     def addPctVarsToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to blocks
 * 
 */
  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctVarsToBlock, 708, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(2, 708, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":716
 *         self.thisptr.addPctVarsToBlock(cpp_pct)
 * 
 *     def addPctVarsToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to border
 * 
 */
  __pyx_codeobj__191 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addPctVarsToBorder, 716, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(2, 716, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":724
 *         self.thisptr.addPctVarsToBorder(cpp_pct)
 * 
 *     def getPctVarsToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for a detector
 * 
 */
  __pyx_tuple__192 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_detectorchainindex, __pyx_n_s_cpp_detectorchainindex, __pyx_n_s_result); if (unlikely(!__pyx_tuple__192)) __PYX_ERR(2, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__192);
  __Pyx_GIVEREF(__pyx_tuple__192);
  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsToBorder, 724, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(2, 724, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":733
 *         return result
 * 
 *     def getPctVarsToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for detectors in detectorchain
 * 
 */
  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsToBorderVector, 733, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(2, 733, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":741
 *         return result
 * 
 *     def getPctVarsToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to a block for a detector
 * 
 */
  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsToBlock, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(2, 741, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":750
 *         return result
 * 
 *     def getPctVarsToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """returns fraction of variables assigned to a block for detectors in detectorchain
 * 
 */
  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsToBlockVector, 750, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(2, 750, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":758
 *         return result
 * 
 *     def getPctVarsFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """Gets fraction of variables that are not longer open for a detector
 * 
 */
  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsFromFree, 758, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(2, 758, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":767
 *         return result
 * 
 *     def getPctVarsFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables that are not longer open for detectors in detectorchain
 * 
 */
  __pyx_codeobj__198 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctVarsFromFreeVector, 767, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(2, 767, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":775
 *         return result
 * 
 *     def getPctConssToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for a detector
 * 
 */
  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssToBorder, 775, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(2, 775, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":784
 *         return result
 * 
 *     def getPctConssToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for detectors in detectorchain
 * 
 */
  __pyx_codeobj__200 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssToBorderVector, 784, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__200)) __PYX_ERR(2, 784, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":792
 *         return result
 * 
 *     def getPctConssToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for a detector
 * 
 */
  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssToBlock, 792, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(2, 792, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":801
 *         return result
 * 
 *     def getPctConssToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for detectors in detectorchain
 * 
 */
  __pyx_codeobj__202 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssToBlockVector, 801, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) __PYX_ERR(2, 801, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":809
 *         return result
 * 
 *     def getPctConssFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for a detector
 * 
 */
  __pyx_codeobj__203 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssFromFree, 809, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(2, 809, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":818
 *         return result
 * 
 *     def getPctConssFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for detectors in detectorchain
 * 
 */
  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getPctConssFromFreeVector, 818, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(2, 818, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":826
 *         return result
 * 
 *     def getScore(self, Score score):             # <<<<<<<<<<<<<<
 *         """gets value of the score
 * 
 */
  __pyx_tuple__205 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_score); if (unlikely(!__pyx_tuple__205)) __PYX_ERR(2, 826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__205);
  __Pyx_GIVEREF(__pyx_tuple__205);
  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__205, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getScore, 826, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(2, 826, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":834
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion(score.scorename)))
 * 
 *     def calcStairlinkingVars(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to stairlinkingvars if possible
 * 
 */
  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_calcStairlinkingVars, 834, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(2, 834, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":844
 *         self.thisptr.calcStairlinkingVars()
 * 
 *     def checkAllConssAssigned(self):             # <<<<<<<<<<<<<<
 *         """checks if all constraints are assigned and deletes the open constraint vector if so
 * 
 */
  __pyx_codeobj__208 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_checkAllConssAssigned, 844, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(2, 844, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":852
 *         return result
 * 
 *     def checkConsistency(self):             # <<<<<<<<<<<<<<
 *         """checks whether the assignments in the partialdec are consistent
 * 
 */
  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_checkConsistency, 852, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(2, 852, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":872
 *         return result
 * 
 *     def complete(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables trivially
 * 
 */
  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_complete, 872, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(2, 872, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":881
 *         self.thisptr.complete()
 * 
 *     def sort(self):             # <<<<<<<<<<<<<<
 *         """sorts the variables and constraints data structures by their indices
 * 
 */
  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_sort, 881, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(2, 881, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":889
 *         return result
 * 
 *     def completeByConnected(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_completeByConnected, 889, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(2, 889, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":897
 *         self.thisptr.completeByConnected()
 * 
 *     def completeByConnectedConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_completeByConnectedConssAdjacenc, 897, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(2, 897, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":907
 *         self.thisptr.completeByConnectedConssAdjacency()
 * 
 *     def completeGreedily(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_codeobj__214 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_completeGreedily, 907, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__214)) __PYX_ERR(2, 907, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":916
 *         self.thisptr.completeGreedily()
 * 
 *     def prepare(self):             # <<<<<<<<<<<<<<
 *         """sorts the partialdec and calculates a its implicit assignments, hashvalue and evaluation
 * 
 */
  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_prepare, 916, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(2, 916, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":922
 *         self.thisptr.prepare()
 * 
 *     def getNDetectors(self):             # <<<<<<<<<<<<<<
 *         """gets the number of detectors the partialdec is propagated by
 * 
 */
  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNDetectors, 922, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(2, 922, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":930
 *         return result
 * 
 *     def getNReps(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blockrepresentatives
 * 
 */
  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNReps, 930, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(2, 930, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":938
 *         return result
 * 
 *     def getNCoeffsForMaster(self):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coefficients in master
 * 
 */
  __pyx_codeobj__218 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNCoeffsForMaster, 938, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__218)) __PYX_ERR(2, 938, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":946
 *         return result
 * 
 *     def setNBlocks(self, int nblocks):             # <<<<<<<<<<<<<<
 *         """sets number of blocks, only increasing number allowed
 * 
 */
  __pyx_tuple__219 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_nblocks, __pyx_n_s_cpp_nblocks); if (unlikely(!__pyx_tuple__219)) __PYX_ERR(2, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__219);
  __Pyx_GIVEREF(__pyx_tuple__219);
  __pyx_codeobj__220 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__219, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setNBlocks, 946, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__220)) __PYX_ERR(2, 946, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":954
 *         self.thisptr.setNBlocks(cpp_nblocks)
 * 
 *     def getNTotalStairlinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets total number of stairlinking variables
 * 
 */
  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNTotalStairlinkingvars, 954, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(2, 954, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":962
 *         return result
 * 
 *     def getNVarsForBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets overall number of variables assigned to a block
 * 
 */
  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNVarsForBlocks, 962, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) __PYX_ERR(2, 962, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":970
 *         return result
 * 
 *     def findVarsLinkingToMaster(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to master if appropriate
 * 
 */
  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_findVarsLinkingToMaster, 970, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(2, 970, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":977
 *         self.thisptr.findVarsLinkingToMaster()
 * 
 *     def findVarsLinkingToStairlinking(self):             # <<<<<<<<<<<<<<
 *         """reassigns variables classified as linking to stairlinking if appropriate
 * 
 */
  __pyx_codeobj__224 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_findVarsLinkingToStairlinking, 977, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__224)) __PYX_ERR(2, 977, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":984
 *         self.thisptr.findVarsLinkingToStairlinking()
 * 
 *     def getNCoeffsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coeffs in a certain block
 * 
 */
  __pyx_tuple__225 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_block_id, __pyx_n_s_cpp_block_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__225)) __PYX_ERR(2, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__225);
  __Pyx_GIVEREF(__pyx_tuple__225);
  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNCoeffsForBlock, 984, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) __PYX_ERR(2, 984, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":994
 *         return result
 * 
 *     def addNNewBlocks(self, int nnewblocks):             # <<<<<<<<<<<<<<
 *         """adds how many new blocks were introduced
 * 
 */
  __pyx_tuple__227 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_nnewblocks, __pyx_n_s_cpp_nnewblocks); if (unlikely(!__pyx_tuple__227)) __PYX_ERR(2, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__227);
  __Pyx_GIVEREF(__pyx_tuple__227);
  __pyx_codeobj__228 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__227, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addNNewBlocks, 994, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) __PYX_ERR(2, 994, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1002
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)
 * 
 *     def getNConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets size of the vector containing constraints assigned to a block
 * 
 */
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNConssForBlock, 1002, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(2, 1002, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1012
 *         return result
 * 
 *     def removeMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """removes the given constraint from master
 * 
 */
  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__154, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_removeMastercons, 1012, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(2, 1012, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1021
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """gets whether the partialdec is from the presolved problem
 * 
 */
  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_isAssignedToOrigProb, 1021, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(2, 1021, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1029
 *         return result
 * 
 *     def refineToBlocks(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on blocks
 * 
 */
  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_refineToBlocks, 1029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) __PYX_ERR(2, 1029, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1038
 *         self.thisptr.refineToBlocks()
 * 
 *     def refineToMaster(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on master
 * 
 */
  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_refineToMaster, 1038, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(2, 1038, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1046
 *         self.thisptr.refineToMaster()
 * 
 *     def alreadyAssignedConssToBlocks(self):             # <<<<<<<<<<<<<<
 *         """checks if at least one constraint is assigned to some block
 * 
 */
  __pyx_codeobj__234 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_alreadyAssignedConssToBlocks, 1046, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__234)) __PYX_ERR(2, 1046, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1054
 *         return result
 * 
 *     def assignCurrentStairlinking(self):             # <<<<<<<<<<<<<<
 *         """assigns open variables to stairlinking if appropriate
 * 
 */
  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_assignCurrentStairlinking, 1054, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(2, 1054, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1064
 *         return result
 * 
 *     def aggInfoCalculated(self):             # <<<<<<<<<<<<<<
 *         """checks if the aggregation information was already calculated
 * 
 */
  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_aggInfoCalculated, 1064, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(2, 1064, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1072
 *         return result
 * 
 *     def considerImplicits(self):             # <<<<<<<<<<<<<<
 *         """assigns every open constraint/variable
 * 
 */
  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_considerImplicits, 1072, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(2, 1072, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1084
 *         self.thisptr.considerImplicits()
 * 
 *     def displayInfo(self, int detailLevel):             # <<<<<<<<<<<<<<
 *         """displays the relevant information of the partialdec
 * 
 */
  __pyx_tuple__238 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_detailLevel, __pyx_n_s_cpp_detailLevel); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(2, 1084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__238);
  __Pyx_GIVEREF(__pyx_tuple__238);
  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_displayInfo, 1084, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(2, 1084, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1095
 *         self.thisptr.displayInfo(cpp_detailLevel)
 * 
 *     def getAncestorList(self):             # <<<<<<<<<<<<<<
 *         """gets ancestor ids as vector
 * 
 */
  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getAncestorList, 1095, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(2, 1095, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1103
 *         return result
 * 
 *     def assignSmallestComponentsButOneConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """computes components by connectedness of constraints and variables
 * 
 */
  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_assignSmallestComponentsButOneCo, 1103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(2, 1103, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1117
 *         self.thisptr.assignSmallestComponentsButOneConssAdjacency()
 * 
 *     def deleteEmptyBlocks(self, bool variables):             # <<<<<<<<<<<<<<
 *         """deletes empty blocks and sets nblocks accordingly
 * 
 */
  __pyx_tuple__242 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_variables, __pyx_n_s_cpp_variables); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(2, 1117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__242);
  __Pyx_GIVEREF(__pyx_tuple__242);
  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__242, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_deleteEmptyBlocks, 1117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(2, 1117, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1128
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)
 * 
 *     def getTranslatedpartialdecid(self):             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()
 *         return result
 */
  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getTranslatedpartialdecid, 1128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(2, 1128, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1132
 *         return result
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):             # <<<<<<<<<<<<<<
 *         cdef int cpp_dec_id = dec_id
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 */
  __pyx_tuple__245 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_dec_id, __pyx_n_s_cpp_dec_id); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(2, 1132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__245);
  __Pyx_GIVEREF(__pyx_tuple__245);
  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setTranslatedpartialdecid, 1132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(2, 1132, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1136
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 * 
 *     def buildDecChainString(self, buffer):             # <<<<<<<<<<<<<<
 *         """creates a detector chain short string for this partialdec, is built from detector chain
 * 
 */
  __pyx_tuple__247 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buffer, __pyx_n_s_c_buffer); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(2, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__247);
  __Pyx_GIVEREF(__pyx_tuple__247);
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_buildDecChainString, 1136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(2, 1136, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1143
 *         self.thisptr.buildDecChainString(c_buffer)
 * 
 *     def addDecChangesFromAncestor(self, PartialDecomposition ancestor):             # <<<<<<<<<<<<<<
 *         """adds the statistical differences to an ancestor
 * 
 */
  __pyx_tuple__249 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ancestor, __pyx_n_s_cpp_ancestor); if (unlikely(!__pyx_tuple__249)) __PYX_ERR(2, 1143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__249);
  __Pyx_GIVEREF(__pyx_tuple__249);
  __pyx_codeobj__250 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__249, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addDecChangesFromAncestor, 1143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(2, 1143, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1151
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)
 * 
 *     def addDetectorChainInfo(PartialDecomposition self, decinfo):             # <<<<<<<<<<<<<<
 *         """adds information about the detector chain
 * 
 */
  __pyx_tuple__251 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_decinfo, __pyx_n_s_c_decinfo); if (unlikely(!__pyx_tuple__251)) __PYX_ERR(2, 1151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__251);
  __Pyx_GIVEREF(__pyx_tuple__251);
  __pyx_codeobj__252 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__251, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addDetectorChainInfo, 1151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(2, 1151, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1160
 *         self.thisptr.addDetectorChainInfo(c_decinfo)
 * 
 *     def getAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """gets partialdec id of given ancestor id
 * 
 */
  __pyx_tuple__253 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ancestor_id, __pyx_n_s_cpp_ancestor_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__253)) __PYX_ERR(2, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__253);
  __Pyx_GIVEREF(__pyx_tuple__253);
  __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__253, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getAncestorID, 1160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(2, 1160, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1169
 *         return result
 * 
 *     def copyPartitionStatistics(PartialDecomposition self, PartialDecomposition otherpartialdec):             # <<<<<<<<<<<<<<
 *         """copies the given partialdec's partition statistics
 * 
 */
  __pyx_tuple__255 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_otherpartialdec, __pyx_n_s_cpp_otherpartialdec); if (unlikely(!__pyx_tuple__255)) __PYX_ERR(2, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__255);
  __Pyx_GIVEREF(__pyx_tuple__255);
  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__255, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_copyPartitionStatistics, 1169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(2, 1169, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1177
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)
 * 
 *     def removeAncestorID(PartialDecomposition self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """removes ancestor id from list
 *         """
 */
  __pyx_tuple__257 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ancestor_id, __pyx_n_s_cpp_ancestor_id); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(2, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__257);
  __Pyx_GIVEREF(__pyx_tuple__257);
  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_removeAncestorID, 1177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(2, 1177, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1183
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)
 * 
 *     def addAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """adds ancestor id to back of list
 * 
 */
  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_addAncestorID, 1183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(2, 1183, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1191
 *         self.thisptr.addAncestorID(cpp_ancestor_id)
 * 
 *     def getBlocksForRep(PartialDecomposition self, int rep_id):             # <<<<<<<<<<<<<<
 *         """get a vector of block ids that are identical to block with id rep_id
 * 
 */
  __pyx_tuple__260 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_rep_id, __pyx_n_s_cpp_rep_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(2, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__260);
  __Pyx_GIVEREF(__pyx_tuple__260);
  __pyx_codeobj__261 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__260, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getBlocksForRep, 1191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(2, 1191, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1201
 *         return result
 * 
 *     def getNNewBlocksVector(self):             # <<<<<<<<<<<<<<
 *         """gets number of blocks the detectors in the detectorchain added
 * 
 */
  __pyx_codeobj__262 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNNewBlocksVector, 1201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(2, 1201, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1209
 *         return result
 * 
 *     def getNAncestors(self):             # <<<<<<<<<<<<<<
 *         """gets number of ancestor partialdecs
 * 
 */
  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNAncestors, 1209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(2, 1209, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1217
 *         return result
 * 
 *     def getNNewBlocks(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """gets number of blocks a detector added
 * 
 */
  __pyx_tuple__264 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_detectorchain_id, __pyx_n_s_cpp_detectorchain_id, __pyx_n_s_result); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(2, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__264);
  __Pyx_GIVEREF(__pyx_tuple__264);
  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getNNewBlocks, 1217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(2, 1217, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1226
 *         return result
 * 
 *     def getFinishedByFinisher(self):             # <<<<<<<<<<<<<<
 *         """returns True iff this partialdec was finished by finishPartialdec() method of a detector
 * 
 */
  __pyx_codeobj__266 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getFinishedByFinisher, 1226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__266)) __PYX_ERR(2, 1226, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1234
 *         return result
 * 
 *     def getDetectorchainInfo(self):             # <<<<<<<<<<<<<<
 *         """gets the detectorchain info vector
 * 
 */
  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getDetectorchainInfo, 1234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(2, 1234, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1242
 *         return result
 * 
 *     def shouldCompletedByConsToMaster(self):             # <<<<<<<<<<<<<<
 *         """checks whether this partialdec is a userpartialdec that should be completed
 * 
 */
  __pyx_codeobj__268 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_shouldCompletedByConsToMaster, 1242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__268)) __PYX_ERR(2, 1242, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1251
 *         return result
 * 
 *     def setFinishedByFinisher(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector
 * 
 */
  __pyx_tuple__269 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_finished, __pyx_n_s_cpp_finished); if (unlikely(!__pyx_tuple__269)) __PYX_ERR(2, 1251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__269);
  __Pyx_GIVEREF(__pyx_tuple__269);
  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setFinishedByFinisher, 1251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(2, 1251, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1259
 *         self.thisptr.setFinishedByFinisher(cpp_finished)
 * 
 *     def calcAggregationInformation(self, bool ignoreDetectionLimits):             # <<<<<<<<<<<<<<
 *         """computes if aggregation of sub problems is possible
 * 
 */
  __pyx_tuple__271 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ignoreDetectionLimits, __pyx_n_s_cpp_ignoreDetectionLimits); if (unlikely(!__pyx_tuple__271)) __PYX_ERR(2, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__271);
  __Pyx_GIVEREF(__pyx_tuple__271);
  __pyx_codeobj__272 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__271, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_calcAggregationInformation, 1259, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(2, 1259, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1271
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)
 * 
 *     def setDetectorPropagated(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets partialdec to be propagated by a detector
 * 
 */
  __pyx_tuple__273 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_detector, __pyx_n_s_dec); if (unlikely(!__pyx_tuple__273)) __PYX_ERR(2, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__273);
  __Pyx_GIVEREF(__pyx_tuple__273);
  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setDetectorPropagated, 1271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(2, 1271, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1279
 *         self.thisptr.setDetectorPropagated(dec)
 * 
 *     def setDetectorFinished(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec
 * 
 */
  __pyx_codeobj__275 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setDetectorFinished, 1279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(2, 1279, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1287
 *         self.thisptr.setDetectorFinished(dec)
 * 
 *     def setDetectorFinishedOrig(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec in the original problem
 * 
 */
  __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setDetectorFinishedOrig, 1287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(2, 1287, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1296
 *         self.thisptr.setDetectorFinishedOrig(dec)
 * 
 *     def setPctConssToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints set to blocks per involved detector
 * 
 */
  __pyx_tuple__277 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_newvector, __pyx_n_s_cpp_newvector); if (unlikely(!__pyx_tuple__277)) __PYX_ERR(2, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__277);
  __Pyx_GIVEREF(__pyx_tuple__277);
  __pyx_codeobj__278 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctConssToBlockVector, 1296, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__278)) __PYX_ERR(2, 1296, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1304
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)
 * 
 *     def setPctConssFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints that are not longer open per involved detector
 * 
 */
  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctConssFromFreeVector, 1304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(2, 1304, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1312
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)
 * 
 *     def setPctConssToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints assigned to the border per involved detector
 * 
 */
  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctConssToBorderVector, 1312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(2, 1312, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1320
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fraction of variables assigned to the border per involved detector
 * 
 */
  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctVarsToBorderVector, 1320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(2, 1320, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1328
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of variables assigned to a block per involved detector
 * 
 */
  __pyx_codeobj__282 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctVarsToBlockVector, 1328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__282)) __PYX_ERR(2, 1328, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1336
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)
 * 
 *     def setPctVarsFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of variables that are not longer open per involved detector
 * 
 */
  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setPctVarsFromFreeVector, 1336, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(2, 1336, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1344
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)
 * 
 *     def setDetectorClockTimes(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of the times that the detectors needed for detecting per involved detector
 * 
 */
  __pyx_codeobj__284 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__277, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setDetectorClockTimes, 1344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(2, 1344, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1352
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)
 * 
 *     def setFinishedByFinisherOrig(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector in the original problem (in case this partialdec was translated)
 * 
 */
  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setFinishedByFinisherOrig, 1352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(2, 1352, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1360
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)
 * 
 *     def setStemsFromOrig(self, bool fromorig):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec stems from an orig problem partialdec
 * 
 */
  __pyx_tuple__286 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_fromorig, __pyx_n_s_cpp_fromorig); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(2, 1360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__286);
  __Pyx_GIVEREF(__pyx_tuple__286);
  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setStemsFromOrig, 1360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(2, 1360, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1368
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)
 * 
 *     def getDetectorClockTime(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """returns the time that the detector related to the given detectorchainindex needed for detecting
 * 
 */
  __pyx_codeobj__288 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getDetectorClockTime, 1368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(2, 1368, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1377
 *         return result
 * 
 *     def getRepForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets index of the representative block for a block, this might be block_id itself
 * 
 */
  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__225, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getRepForBlock, 1377, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(2, 1377, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1387
 *         return result
 * 
 *     def showVisualization(self):             # <<<<<<<<<<<<<<
 *         """generates and opens a gp visualization of the partialdec
 * 
 */
  __pyx_codeobj__290 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_showVisualization, 1387, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__290)) __PYX_ERR(2, 1387, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1394
 *         self.thisptr.showVisualization()
 * 
 *     def _repr_svg_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("svg")
 * 
 */
  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_repr_svg, 1394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(2, 1394, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1397
 *         return self.__generate_visualization("svg")
 * 
 *     def _repr_png_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("png")
 * 
 */
  __pyx_codeobj__292 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_repr_png, 1397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(2, 1397, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1450
 * 
 *     # BEGIN AUTOGENERATED BLOCK
 *     def setAncestorList(PartialDecomposition self, object newlist):             # <<<<<<<<<<<<<<
 *         """set ancestor list directly
 * 
 */
  __pyx_tuple__293 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_newlist, __pyx_n_s_cpp_newlist); if (unlikely(!__pyx_tuple__293)) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__293);
  __Pyx_GIVEREF(__pyx_tuple__293);
  __pyx_codeobj__294 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__293, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setAncestorList, 1450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__294)) __PYX_ERR(2, 1450, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1458
 *         self.thisptr.setAncestorList(cpp_newlist)
 * 
 *     def getDetectorClockTimes(PartialDecomposition self):             # <<<<<<<<<<<<<<
 *         """returns a vector of the clock times that each detector needed that was involved in this partialdec
 * 
 */
  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getDetectorClockTimes, 1458, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(2, 1458, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1474
 *     #     return result
 * 
 *     def getRepVarmap(PartialDecomposition self, int repid, int blockrepid):             # <<<<<<<<<<<<<<
 *         """Gets the represenation varmap
 * 
 */
  __pyx_tuple__296 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_repid, __pyx_n_s_blockrepid, __pyx_n_s_cpp_repid, __pyx_n_s_cpp_blockrepid, __pyx_n_s_result); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(2, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__296);
  __Pyx_GIVEREF(__pyx_tuple__296);
  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__296, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getRepVarmap, 1474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(2, 1474, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1488
 *         return result
 * 
 *     def getVarProbindexForBlock(PartialDecomposition self, int varid, int block):             # <<<<<<<<<<<<<<
 *         """Gets index in variables array of a block for a variable
 * 
 */
  __pyx_tuple__298 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_varid, __pyx_n_s_block, __pyx_n_s_cpp_varid, __pyx_n_s_cpp_block, __pyx_n_s_result); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(2, 1488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__298);
  __Pyx_GIVEREF(__pyx_tuple__298);
  __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_getVarProbindexForBlock, 1488, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(2, 1488, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1517
 *     #     raise NotImplementedError()
 * 
 *     def setConsPartitionStatistics(PartialDecomposition self, int detectorchainindex, ConsPart partition, object consclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used conspartition.
 *         """
 */
  __pyx_tuple__300 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_detectorchainindex, __pyx_n_s_partition, __pyx_n_s_consclassesmaster, __pyx_n_s_cpp_detectorchainindex, __pyx_n_s_cpp_partition, __pyx_n_s_cpp_consclassesmaster); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(2, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__300);
  __Pyx_GIVEREF(__pyx_tuple__300);
  __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setConsPartitionStatistics, 1517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(2, 1517, __pyx_L1_error)

  /* "src/pygcgopt/decomposition.pxi":1533
 *     #     self.thisptr.setDetectorchain(cpp_givenDetectorChain)
 * 
 *     def setVarPartitionStatistics(PartialDecomposition self, int detectorchainindex, VarPart partition, object varclasseslinking, object varclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used varpartition.
 *         """
 */
  __pyx_tuple__302 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_detectorchainindex, __pyx_n_s_partition, __pyx_n_s_varclasseslinking, __pyx_n_s_varclassesmaster, __pyx_n_s_cpp_detectorchainindex, __pyx_n_s_cpp_partition, __pyx_n_s_cpp_varclasseslinking, __pyx_n_s_cpp_varclassesmaster); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(2, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__302);
  __Pyx_GIVEREF(__pyx_tuple__302);
  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__302, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_decomposition_pxi, __pyx_n_s_setVarPartitionStatistics, 1533, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(2, 1533, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 */
  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":12
 *         return new_DetProbData
 * 
 *     def createConsPart(self, name, nclasses, ncons):             # <<<<<<<<<<<<<<
 *         """returns a ConsPart object
 * 
 */
  __pyx_tuple__306 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_name, __pyx_n_s_nclasses, __pyx_n_s_ncons, __pyx_n_s_scip, __pyx_n_s_c_name, __pyx_n_s_conspatitionptr); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(9, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__306);
  __Pyx_GIVEREF(__pyx_tuple__306);
  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__306, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_createConsPart, 12, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(9, 12, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":29
 *         return ConsPart.create(conspatitionptr, self)
 * 
 *     def createVarPart(self, name, nclasses, nvars):             # <<<<<<<<<<<<<<
 *         """returns a VarPart object
 * 
 */
  __pyx_tuple__308 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_name, __pyx_n_s_nclasses, __pyx_n_s_nvars, __pyx_n_s_scip, __pyx_n_s_c_name, __pyx_n_s_varpatitionptr); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__308);
  __Pyx_GIVEREF(__pyx_tuple__308);
  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__308, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_createVarPart, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(9, 29, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":46
 *         return VarPart.create(varpatitionptr, self)
 * 
 *     def candidatesNBlocks(self):             # <<<<<<<<<<<<<<
 *         """candidate for the number of blocks, second int indicates how often a candidate was added
 *         """
 */
  __pyx_codeobj__310 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_candidatesNBlocks, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__310)) __PYX_ERR(9, 46, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":52
 *         return result
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):             # <<<<<<<<<<<<<<
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 */
  __pyx_tuple__311 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_candidatesNBlocks, __pyx_n_s_cpp_candidatesNBlocks); if (unlikely(!__pyx_tuple__311)) __PYX_ERR(9, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__311);
  __Pyx_GIVEREF(__pyx_tuple__311);
  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__311, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_candidatesNBlocks, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(9, 52, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":56
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 * 
 *     def conspartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different constraint class distributions.
 *         """
 */
  __pyx_tuple__313 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_r); if (unlikely(!__pyx_tuple__313)) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__313);
  __Pyx_GIVEREF(__pyx_tuple__313);
  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_conspartitioncollection, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(9, 56, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":62
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]
 * 
 *     def conspartitioncollection(self, object conspartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */
  __pyx_tuple__315 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_conspartitioncollection, __pyx_n_s_cpp_conspartitioncollection, __pyx_n_s_conspartitioncollection_ptr, __pyx_n_s_conspartitioncollection_element); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(9, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__315);
  __Pyx_GIVEREF(__pyx_tuple__315);
  __pyx_codeobj__316 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__315, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_conspartitioncollection, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__316)) __PYX_ERR(9, 62, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":73
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 * 
 *     def varpartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different variable class distributions.
 *         """
 */
  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_varpartitioncollection, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(9, 73, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":79
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def varpartitioncollection(self, object varpartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */
  __pyx_tuple__318 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_varpartitioncollection, __pyx_n_s_cpp_varpartitioncollection, __pyx_n_s_varpartitioncollection_ptr, __pyx_n_s_varpartitioncollection_element); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(9, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__318);
  __Pyx_GIVEREF(__pyx_tuple__318);
  __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__318, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_varpartitioncollection, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(9, 79, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":90
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 * 
 *     def classificationtime(self):             # <<<<<<<<<<<<<<
 *         """time that was consumed by the classification of the constraint and variables classifiers.
 *         """
 */
  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_classificationtime, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(9, 90, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":96
 *         return result
 * 
 *     def classificationtime(self, double classificationtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_classificationtime = classificationtime
 *         self.thisptr.classificationtime = cpp_classificationtime
 */
  __pyx_tuple__321 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_classificationtime, __pyx_n_s_cpp_classificationtime); if (unlikely(!__pyx_tuple__321)) __PYX_ERR(9, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__321);
  __Pyx_GIVEREF(__pyx_tuple__321);
  __pyx_codeobj__322 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__321, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_classificationtime, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(9, 96, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":100
 *         self.thisptr.classificationtime = cpp_classificationtime
 * 
 *     def nblockscandidatescalctime(self):             # <<<<<<<<<<<<<<
 *         """time that was used to calulate the candidates of te block number.
 *         """
 */
  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_nblockscandidatescalctime, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(9, 100, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":106
 *         return result
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 */
  __pyx_tuple__324 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_nblockscandidatescalctime, __pyx_n_s_cpp_nblockscandidatescalctime); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(9, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__324);
  __Pyx_GIVEREF(__pyx_tuple__324);
  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_nblockscandidatescalctime, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(9, 106, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":110
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 * 
 *     def postprocessingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent in postproceesing decomposigtions.
 *         """
 */
  __pyx_codeobj__326 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_postprocessingtime, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__326)) __PYX_ERR(9, 110, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":116
 *         return result
 * 
 *     def postprocessingtime(self, double postprocessingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_postprocessingtime = postprocessingtime
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 */
  __pyx_tuple__327 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_postprocessingtime, __pyx_n_s_cpp_postprocessingtime); if (unlikely(!__pyx_tuple__327)) __PYX_ERR(9, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__327);
  __Pyx_GIVEREF(__pyx_tuple__327);
  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__327, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_postprocessingtime, 116, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(9, 116, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":120
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 * 
 *     def translatingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent by transforming partialdecs between presolved and orig problem.
 *         """
 */
  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_translatingtime, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(9, 120, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":126
 *         return result
 * 
 *     def translatingtime(self, double translatingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_translatingtime = translatingtime
 *         self.thisptr.translatingtime = cpp_translatingtime
 */
  __pyx_tuple__330 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_translatingtime, __pyx_n_s_cpp_translatingtime); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(9, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__330);
  __Pyx_GIVEREF(__pyx_tuple__330);
  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__330, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_translatingtime, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(9, 126, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":130
 *         self.thisptr.translatingtime = cpp_translatingtime
 * 
 *     def addConsPartition(self, ConsPart partition):             # <<<<<<<<<<<<<<
 *         """adds a constraint partition if it is no duplicate of an existing constraint partition
 * 
 */
  __pyx_tuple__332 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partition, __pyx_n_s_cpp_partition); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(9, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__332);
  __Pyx_GIVEREF(__pyx_tuple__332);
  __pyx_codeobj__333 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__332, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addConsPartition, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__333)) __PYX_ERR(9, 130, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":139
 *         self.thisptr.addConsPartition(cpp_partition)
 * 
 *     def addCandidatesNBlocksNVotes(self, int candidate, int nvotes):             # <<<<<<<<<<<<<<
 *         """adds a candidate for block number and counts how often a candidate is added
 * 
 */
  __pyx_tuple__334 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_candidate, __pyx_n_s_nvotes); if (unlikely(!__pyx_tuple__334)) __PYX_ERR(9, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__334);
  __Pyx_GIVEREF(__pyx_tuple__334);
  __pyx_codeobj__335 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__334, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addCandidatesNBlocksNVotes, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__335)) __PYX_ERR(9, 139, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":149
 *         self.thisptr.addCandidatesNBlocksNVotes(candidate, nvotes)
 * 
 *     def addPartialdecToAncestor(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to ancestor partialdecs
 * 
 */
  __pyx_tuple__336 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partialdec, __pyx_n_s_cpp_partialdec); if (unlikely(!__pyx_tuple__336)) __PYX_ERR(9, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__336);
  __Pyx_GIVEREF(__pyx_tuple__336);
  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addPartialdecToAncestor, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(9, 149, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":158
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)
 * 
 *     def addPartialdecToOpen(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to current partialdecs (data structure for partialdecs that are going to processed in the propagation rounds)
 * 
 */
  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addPartialdecToOpen, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(9, 158, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":169
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)
 * 
 *     def addPartialdecToFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs
 * 
 */
  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addPartialdecToFinished, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(9, 169, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":182
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)
 * 
 *     def addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs without checking for duplicates, dev has to check this on his own
 * 
 */
  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addPartialdecToFinishedUnchecked, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(9, 182, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":193
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)
 * 
 *     def addVarPartition(self, VarPart partition):             # <<<<<<<<<<<<<<
 *         """adds a variable partition if it is no duplicate of an existing variable partition
 * 
 */
  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__332, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_addVarPartition, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(9, 193, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":202
 *         self.thisptr.addVarPartition(cpp_partition)
 * 
 *     def clearAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears ancestor partialdec data structure
 * 
 */
  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_clearAncestorPartialdecs, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(9, 202, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":209
 *         self.thisptr.clearAncestorPartialdecs()
 * 
 *     def clearCurrentPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears current partialdec data structure
 * 
 */
  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_clearCurrentPartialdecs, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(9, 209, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":216
 *         self.thisptr.clearCurrentPartialdecs()
 * 
 *     def clearFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears finished partialdec data structure
 * 
 */
  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_clearFinishedPartialdecs, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(9, 216, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":223
 *         self.thisptr.clearFinishedPartialdecs()
 * 
 *     def createConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """creates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common
 *         """
 */
  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_createConssAdjacency, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(9, 223, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":228
 *         self.thisptr.createConssAdjacency()
 * 
 *     def freeTemporaryData(self):             # <<<<<<<<<<<<<<
 *         """frees temporary data that is only needed during the detection process
 *         """
 */
  __pyx_codeobj__346 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_freeTemporaryData, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(9, 228, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":233
 *         self.thisptr.freeTemporaryData()
 * 
 *     def getAncestorPartialdec(self, partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from ancestor partialdec data structure with given index
 * 
 */
  __pyx_tuple__347 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partialdecindex, __pyx_n_s_result); if (unlikely(!__pyx_tuple__347)) __PYX_ERR(9, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__347);
  __Pyx_GIVEREF(__pyx_tuple__347);
  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getAncestorPartialdec, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(9, 233, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":244
 *         return PartialDecomposition.create(result)
 * 
 *     def getConsPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns a constraint partition
 * 
 */
  __pyx_tuple__349 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partitionIndex, __pyx_n_s_result); if (unlikely(!__pyx_tuple__349)) __PYX_ERR(9, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__349);
  __Pyx_GIVEREF(__pyx_tuple__349);
  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getConsPartition, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(9, 244, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":255
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))
 * 
 *     def getConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored constraint partitions
 * 
 */
  __pyx_tuple__351 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_nconsparts, __pyx_n_s_r); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(9, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getConsPartitions, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(9, 255, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":264
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]
 * 
 *     def getCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns constraint related to a constraint index
 * 
 */
  __pyx_tuple__353 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_consIndex); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(9, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__353);
  __Pyx_GIVEREF(__pyx_tuple__353);
  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getCons, 264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(9, 264, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":274
 *         return Constraint.create(self.thisptr.getCons(consIndex))
 * 
 *     def getConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns list of constraint indices that have a common variable with the given constraint
 * 
 */
  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getConssForCons, 274, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(9, 274, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":286
 *         return self.thisptr.getConssForCons(consIndex)
 * 
 *     def getConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the constraint indices of the coefficient matrix for a variable
 * 
 */
  __pyx_tuple__356 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_varIndex); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(9, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__356);
  __Pyx_GIVEREF(__pyx_tuple__356);
  __pyx_codeobj__357 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getConssForVar, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__357)) __PYX_ERR(9, 286, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":296
 *         return self.thisptr.getConssForVar(varIndex)
 * 
 *     def getOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """determines all partialdecs from current (open) partialdec data structure
 * 
 */
  __pyx_codeobj__358 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getOpenPartialdecs, 296, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__358)) __PYX_ERR(9, 296, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":305
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getFinishedPartialdec(self, int partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from finished partialdec data structure
 * 
 */
  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getFinishedPartialdec, 305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(9, 305, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":316
 *         return PartialDecomposition.create(result)
 * 
 *     def getFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """gets all finished partialdecs
 * 
 */
  __pyx_codeobj__360 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getFinishedPartialdecs, 316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__360)) __PYX_ERR(9, 316, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":325
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getIndexForCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the constraint index related to a constraint
 * 
 */
  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__118, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getIndexForCons, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(9, 325, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":335
 *         return self.thisptr.getIndexForCons(cons.scip_cons)
 * 
 *     def getIndexForVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the variable index related to a variable
 * 
 */
  __pyx_tuple__362 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_var); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(9, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__362);
  __Pyx_GIVEREF(__pyx_tuple__362);
  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__362, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getIndexForVar, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(9, 335, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":345
 *         return self.thisptr.getIndexForVar(var.scip_var)
 * 
 *     def getNAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of ancestor partialdec data structure
 * 
 */
  __pyx_codeobj__364 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNAncestorPartialdecs, 345, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__364)) __PYX_ERR(9, 345, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":353
 *         return self.thisptr.getNAncestorPartialdecs()
 * 
 *     def getNConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different constraint partitions
 * 
 */
  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNConsPartitions, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(9, 353, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":361
 *         return self.thisptr.getNConsPartitions()
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables considered in the detprobdata
 * 
 */
  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNConss, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(9, 361, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":369
 *         return self.thisptr.getNConss()
 * 
 *     def getNConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given constraint index
 * 
 */
  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNConssForCons, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(9, 369, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":379
 *         return self.thisptr.getNConssForCons(consIndex)
 * 
 *     def getNConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given variable index where the variable has a nonzero entry in
 * 
 */
  __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNConssForVar, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(9, 379, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":389
 *         return self.thisptr.getNConssForVar(varIndex)
 * 
 *     def getNOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of current (open) partialdec data structure
 * 
 */
  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNOpenPartialdecs, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(9, 389, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":397
 *         return self.thisptr.getNOpenPartialdecs()
 * 
 *     def getNFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """size of finished partialdec data structure
 * 
 */
  __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNFinishedPartialdecs, 397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(9, 397, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":405
 *         return self.thisptr.getNFinishedPartialdecs()
 * 
 *     def getNPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns the number of stored partialdecs
 * 
 */
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNPartialdecs, 405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(9, 405, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":413
 *         return self.thisptr.getNPartialdecs()
 * 
 *     def getNNonzeros(self):             # <<<<<<<<<<<<<<
 *         """returns the number of nonzero entries in the coefficient matrix
 * 
 */
  __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNNonzeros, 413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(9, 413, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":421
 *         return self.thisptr.getNNonzeros()
 * 
 *     def getNVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different variable partitions
 * 
 */
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNVarPartitions, 421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(9, 421, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":429
 *         return self.thisptr.getNVarPartitions()
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """return the number of variables considered in the detprobdata
 * 
 */
  __pyx_codeobj__374 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNVars, 429, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__374)) __PYX_ERR(9, 429, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":437
 *         return self.thisptr.getNVars()
 * 
 *     def getNVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of variables for a given constraint
 * 
 */
  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getNVarsForCons, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(9, 437, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":447
 *         return self.thisptr.getNVarsForCons(consIndex)
 * 
 *     def getOrigVarsFixedZero(self):             # <<<<<<<<<<<<<<
 *         """returns list of all original variables that are fixed to zero
 * 
 */
  __pyx_tuple__376 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_v); if (unlikely(!__pyx_tuple__376)) __PYX_ERR(9, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__376);
  __Pyx_GIVEREF(__pyx_tuple__376);
  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__376, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getOrigVarsFixedZero, 447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(9, 447, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":456
 *         return [Variable.create(v) for v in result]
 * 
 *     def getRelevantConss(self):             # <<<<<<<<<<<<<<
 *         """returns list of all constraints that are not marked as deleted or obsolete
 * 
 */
  __pyx_tuple__378 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_result, __pyx_n_s_c); if (unlikely(!__pyx_tuple__378)) __PYX_ERR(9, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__378);
  __Pyx_GIVEREF(__pyx_tuple__378);
  __pyx_codeobj__379 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__378, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getRelevantConss, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__379)) __PYX_ERR(9, 456, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":465
 *         return [Constraint.create(c) for c in result]
 * 
 *     def getRelevantVars(self):             # <<<<<<<<<<<<<<
 *         """returns list of all problem variables that are not fixed to 0
 * 
 */
  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__376, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getRelevantVars, 465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(9, 465, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":474
 *         return [Variable.create(v) for v in result]
 * 
 *     def getModel(self):             # <<<<<<<<<<<<<<
 *         """returns the corresponding Model instance wrapping the scip data structure
 * 
 */
  __pyx_tuple__381 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_scip); if (unlikely(!__pyx_tuple__381)) __PYX_ERR(9, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__381);
  __Pyx_GIVEREF(__pyx_tuple__381);
  __pyx_codeobj__382 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__381, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getModel, 474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__382)) __PYX_ERR(9, 474, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":483
 *         return SCIPModel.create(scip)
 * 
 *     def getSortedCandidatesNBlocks(self, object candidates):             # <<<<<<<<<<<<<<
 *         """gets the candidates for number of blocks added by the user followed by the found ones sorted in descending order by how often a candidate was proposed
 * 
 */
  __pyx_tuple__383 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_candidates, __pyx_n_s_cpp_candidates); if (unlikely(!__pyx_tuple__383)) __PYX_ERR(9, 483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__383);
  __Pyx_GIVEREF(__pyx_tuple__383);
  __pyx_codeobj__384 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getSortedCandidatesNBlocks, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__384)) __PYX_ERR(9, 483, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":492
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)
 * 
 *     def getVal(self, row, col):             # <<<<<<<<<<<<<<
 *         """returns a coefficient from the coefficient matrix
 * 
 */
  __pyx_tuple__385 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_row, __pyx_n_s_col); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(9, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__385);
  __Pyx_GIVEREF(__pyx_tuple__385);
  __pyx_codeobj__386 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__385, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getVal, 492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__386)) __PYX_ERR(9, 492, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":504
 *         return self.thisptr.getVal(row, col)
 * 
 *     def getValsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the nonzero coefficients of the coefficient matrix for a constraint
 * 
 */
  __pyx_codeobj__387 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getValsForCons, 504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__387)) __PYX_ERR(9, 504, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":516
 *         return self.thisptr.getValsForCons(consIndex)
 * 
 *     def getVarPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns variable partition with given index
 * 
 */
  __pyx_codeobj__388 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getVarPartition, 516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__388)) __PYX_ERR(9, 516, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":527
 *         return VarPart.create(result, self)
 * 
 *     def getVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored variable partitions
 * 
 */
  __pyx_codeobj__389 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getVarPartitions, 527, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__389)) __PYX_ERR(9, 527, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":536
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def getVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns variable related to a variable index
 * 
 */
  __pyx_codeobj__390 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getVar, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__390)) __PYX_ERR(9, 536, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":544
 *         return Variable.create(self.thisptr.getVar(varIndex))
 * 
 *     def getVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the variable indices of the coefficient matrix for a constraint
 * 
 */
  __pyx_codeobj__391 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_getVarsForCons, 544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__391)) __PYX_ERR(9, 544, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":554
 *         return self.thisptr.getVarsForCons(consIndex)
 * 
 *     def isConsCardinalityCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is a cardinality constraint, i.e. of the .. math::`\\sum_{i} x_i = b`
 * 
 */
  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isConsCardinalityCons, 554, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(9, 554, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":564
 *         return self.thisptr.isConsCardinalityCons(consIndex)
 * 
 *     def isConssAdjInitialized(self):             # <<<<<<<<<<<<<<
 *         """determines whether or not the constraint-constraint adjacency data structure is initilized
 * 
 */
  __pyx_codeobj__393 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isConssAdjInitialized, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__393)) __PYX_ERR(9, 564, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":572
 *         return self.thisptr.isConssAdjInitialized()
 * 
 *     def isConsSetpp(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified indec partitioning, or packing covering constraint?
 * 
 */
  __pyx_codeobj__394 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isConsSetpp, 572, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__394)) __PYX_ERR(9, 572, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":582
 *         return self.thisptr.isConsSetpp(consIndex)
 * 
 *     def isConsSetppc(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified index partitioning packing, or covering constraint?
 * 
 */
  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isConsSetppc, 582, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(9, 582, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":592
 *         return self.thisptr.isConsSetppc(consIndex)
 * 
 *     def isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """checks if partialdec is a duplicate of an existing finished partialdec
 * 
 */
  __pyx_codeobj__396 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isPartialdecDuplicateofFinished, 592, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__396)) __PYX_ERR(9, 592, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":603
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """returns True if the matrix structure corresponds to the presolved problem
 * 
 */
  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_isAssignedToOrigProb, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(9, 603, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":611
 *         return self.thisptr.isAssignedToOrigProb()
 * 
 *     def partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, object partialdecs, sort):             # <<<<<<<<<<<<<<
 *         """check if partialdec is a duplicate of any given partialdecs
 * 
 */
  __pyx_tuple__398 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_comppartialdec, __pyx_n_s_partialdecs, __pyx_n_s_sort, __pyx_n_s_cpp_comppartialdec, __pyx_n_s_cpp_partialdecs, __pyx_n_s_partialdecs_ptr, __pyx_n_s_partialdecs_element); if (unlikely(!__pyx_tuple__398)) __PYX_ERR(9, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__398);
  __Pyx_GIVEREF(__pyx_tuple__398);
  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__398, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_partialdecIsNoDuplicateOfPartial, 611, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(9, 611, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":632
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 * 
 *     def sortFinishedForScore(self):             # <<<<<<<<<<<<<<
 *         """sorts partialdecs in finished partialdecs data structure according to the current scoretype
 *         """
 */
  __pyx_codeobj__400 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_sortFinishedForScore, 632, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(9, 632, __pyx_L1_error)

  /* "src/pygcgopt/detprobdata.pxi":637
 *         self.thisptr.sortFinishedForScore()
 * 
 *     def translatePartialdecs(self, DetProbData otherdata, object otherpartialdecs):             # <<<<<<<<<<<<<<
 *         """translates partialdecs if the index structure of the problem has changed, e.g. due to presolving
 * 
 */
  __pyx_tuple__401 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_otherdata, __pyx_n_s_otherpartialdecs, __pyx_n_s_cpp_otherdata, __pyx_n_s_cpp_otherpartialdecs, __pyx_n_s_otherpartialdecs_ptr, __pyx_n_s_otherpartialdecs_element, __pyx_n_s_result, __pyx_n_s_r); if (unlikely(!__pyx_tuple__401)) __PYX_ERR(9, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__401);
  __Pyx_GIVEREF(__pyx_tuple__401);
  __pyx_codeobj__402 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__401, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_detprobdata_pxi, __pyx_n_s_translatePartialdecs, 637, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__402)) __PYX_ERR(9, 637, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__403 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__403)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__404 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__404)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "src/pygcgopt/consclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeConsClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of constraint classifier'''
 *         pass
 */
  __pyx_codeobj__405 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_consclassifier_pxi, __pyx_n_s_freeConsClassifier, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__405)) __PYX_ERR(3, 6, __pyx_L1_error)

  /* "src/pygcgopt/consclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, conss, partition):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_tuple__406 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_conss, __pyx_n_s_partition); if (unlikely(!__pyx_tuple__406)) __PYX_ERR(3, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__406);
  __Pyx_GIVEREF(__pyx_tuple__406);
  __pyx_codeobj__407 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__406, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_consclassifier_pxi, __pyx_n_s_classify, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__407)) __PYX_ERR(3, 10, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConsClassifier__set_state(self, __pyx_state)
 */
  __pyx_codeobj__409 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__409)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "src/pygcgopt/varclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeVarClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of variable classifier'''
 *         pass
 */
  __pyx_codeobj__410 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_varclassifier_pxi, __pyx_n_s_freeVarClassifier, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__410)) __PYX_ERR(10, 6, __pyx_L1_error)

  /* "src/pygcgopt/varclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, vars, partition):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_tuple__411 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_vars, __pyx_n_s_partition); if (unlikely(!__pyx_tuple__411)) __PYX_ERR(10, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__411);
  __Pyx_GIVEREF(__pyx_tuple__411);
  __pyx_codeobj__412 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__411, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_varclassifier_pxi, __pyx_n_s_classify, 10, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__412)) __PYX_ERR(10, 10, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__413 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__413)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VarClassifier__set_state(self, __pyx_state)
 */
  __pyx_codeobj__414 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__414)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__415 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__415)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(self, __pyx_state)
 */
  __pyx_codeobj__416 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__416)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__417 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__417)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_USERGIVEN__set_state(self, __pyx_state)
 */
  __pyx_codeobj__418 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__418)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(self, __pyx_state)
 */
  __pyx_codeobj__420 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__420)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_codeobj__421 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__421)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(self, __pyx_state)
 */
  __pyx_codeobj__422 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":75
 *     """Main class for interaction with the GCG solver."""
 * 
 *     def includeDefaultPlugins(self):             # <<<<<<<<<<<<<<
 *         """Includes all default plug-ins of GCG into SCIP
 * 
 */
  __pyx_codeobj__423 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includeDefaultPlugins, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__423)) __PYX_ERR(4, 75, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":82
 *         PY_SCIP_CALL(SCIPincludeGcgPlugins(self._scip))
 * 
 *     def addVar(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         pyVar = <Variable>super().addVar(*args, **kwargs)
 * 
 */
  __pyx_tuple__424 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_pyVar); if (unlikely(!__pyx_tuple__424)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__424);
  __Pyx_GIVEREF(__pyx_tuple__424);
  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__424, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_addVar, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(4, 82, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":89
 *         return pyVar
 * 
 *     def presolve(self):             # <<<<<<<<<<<<<<
 *         """Presolve the problem."""
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 */
  __pyx_codeobj__426 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_presolve, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__426)) __PYX_ERR(4, 89, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":93
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 * 
 *     def detect(self):             # <<<<<<<<<<<<<<
 *         """Detect the problem.
 * 
 */
  __pyx_codeobj__427 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_detect, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__427)) __PYX_ERR(4, 93, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":103
 *         PY_SCIP_CALL(GCGdetect(self._scip))
 * 
 *     def printStatistics(self):             # <<<<<<<<<<<<<<
 *         """Print solving statistics of GCG to stdout."""
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 */
  __pyx_codeobj__428 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_printStatistics, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__428)) __PYX_ERR(4, 103, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":107
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 * 
 *     def printVersion(self):             # <<<<<<<<<<<<<<
 *         """Print version, copyright information and compile mode of GCG and SCIP"""
 *         GCGprintVersion(self._scip, NULL)
 */
  __pyx_codeobj__429 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_printVersion, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(4, 107, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":113
 *         super().printVersion()
 * 
 *     def optimize(self):             # <<<<<<<<<<<<<<
 *         """Optimize the problem.
 * 
 */
  __pyx_codeobj__430 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_optimize, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__430)) __PYX_ERR(4, 113, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":121
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))
 * 
 *     def getDualbound(self):             # <<<<<<<<<<<<<<
 *         """Retrieve the best dual bound.
 * 
 */
  __pyx_codeobj__431 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getDualbound, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__431)) __PYX_ERR(4, 121, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":133
 *         return GCGgetDualbound(self._scip)
 * 
 *     def getDetprobdataOrig(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for unpresolved problem
 *         """
 */
  __pyx_tuple__432 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_detprobdata); if (unlikely(!__pyx_tuple__432)) __PYX_ERR(4, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__432);
  __Pyx_GIVEREF(__pyx_tuple__432);
  __pyx_codeobj__433 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__432, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getDetprobdataOrig, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__433)) __PYX_ERR(4, 133, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":139
 *         return DetProbData.create(detprobdata)
 * 
 *     def getDetprobdataPresolved(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for presolved problem
 *         """
 */
  __pyx_codeobj__434 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__432, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getDetprobdataPresolved, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__434)) __PYX_ERR(4, 139, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":145
 *         return DetProbData.create(detprobdata)
 * 
 *     def listDecompositions(self):             # <<<<<<<<<<<<<<
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)
 */
  __pyx_tuple__435 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_npartialdecs, __pyx_n_s_decids, __pyx_n_s_decomps, __pyx_n_s_i); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__435);
  __Pyx_GIVEREF(__pyx_tuple__435);
  __pyx_codeobj__436 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__435, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listDecompositions, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__436)) __PYX_ERR(4, 145, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":158
 *         return decomps
 * 
 *     def getPartDecompFromID(self, id):             # <<<<<<<<<<<<<<
 *         """returns a partial decomposition regarding to the given partialdecomp id
 * 
 */
  __pyx_tuple__437 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_id, __pyx_n_s_pd); if (unlikely(!__pyx_tuple__437)) __PYX_ERR(4, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__437);
  __Pyx_GIVEREF(__pyx_tuple__437);
  __pyx_codeobj__438 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__437, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getPartDecompFromID, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__438)) __PYX_ERR(4, 158, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":168
 *         return pd
 * 
 *     def addDecompositionFromConss(self, master_conss, *block_conss):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG based on constraints.
 * 
 */
  __pyx_tuple__439 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_master_conss, __pyx_n_s_block_conss, __pyx_n_s_pd, __pyx_n_s_idx, __pyx_n_s_conss); if (unlikely(!__pyx_tuple__439)) __PYX_ERR(4, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__439);
  __Pyx_GIVEREF(__pyx_tuple__439);
  __pyx_codeobj__440 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__439, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_addDecompositionFromConss, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__440)) __PYX_ERR(4, 168, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":188
 *         return pd
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         self.addDecomposition(partialdec)
 * 
 */
  __pyx_codeobj__441 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_addPreexistingPartialDecompositi, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__441)) __PYX_ERR(4, 188, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":191
 *         self.addDecomposition(partialdec)
 * 
 *     def addDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG.
 * 
 */
  __pyx_codeobj__442 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_addDecomposition, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(4, 191, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":202
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 * 
 *     def createDecomposition(self):             # <<<<<<<<<<<<<<
 *         """Creates a new empty PartialDecomposition.
 * 
 */
  __pyx_tuple__443 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_is_presolved, __pyx_n_s_decomp); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__443);
  __Pyx_GIVEREF(__pyx_tuple__443);
  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__443, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_createDecomposition, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(4, 202, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":219
 *         return PartialDecomposition.create(decomp)
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):             # <<<<<<<<<<<<<<
 *         c_solvername = str_conversion(solvername)
 *         c_desc = str_conversion(desc)
 */
  __pyx_tuple__445 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_pricingSolver, __pyx_n_s_solvername, __pyx_n_s_desc, __pyx_n_s_priority, __pyx_n_s_heuristicEnabled, __pyx_n_s_exactEnabled, __pyx_n_s_c_solvername, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__445)) __PYX_ERR(4, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__445);
  __Pyx_GIVEREF(__pyx_tuple__445);
  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__445, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includePricingSolver, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(4, 219, __pyx_L1_error)
  __pyx_tuple__447 = PyTuple_Pack(3, __pyx_int_0, Py_False, Py_False); if (unlikely(!__pyx_tuple__447)) __PYX_ERR(4, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__447);
  __Pyx_GIVEREF(__pyx_tuple__447);

  /* "pygcgopt/gcg.pyx":232
 *         Py_INCREF(pricingSolver)
 * 
 *     def listPricingSolvers(self):             # <<<<<<<<<<<<<<
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 */
  __pyx_tuple__448 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_mp, __pyx_n_s_n_pricing_solvers, __pyx_n_s_pricing_solvers, __pyx_n_s_i); if (unlikely(!__pyx_tuple__448)) __PYX_ERR(4, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__448);
  __Pyx_GIVEREF(__pyx_tuple__448);
  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__448, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listPricingSolvers, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(4, 232, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":239
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]
 * 
 *     def setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact and heuristic solving for the specified pricing solver.
 * 
 */
  __pyx_tuple__450 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_pricing_solver_name, __pyx_n_s_is_enabled); if (unlikely(!__pyx_tuple__450)) __PYX_ERR(4, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__450);
  __Pyx_GIVEREF(__pyx_tuple__450);
  __pyx_codeobj__451 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__450, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setPricingSolverEnabled, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__451)) __PYX_ERR(4, 239, __pyx_L1_error)
  __pyx_tuple__452 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__452)) __PYX_ERR(4, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__452);
  __Pyx_GIVEREF(__pyx_tuple__452);

  /* "pygcgopt/gcg.pyx":253
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)
 * 
 *     def setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact solving for the specified pricing solver.
 * 
 */
  __pyx_codeobj__453 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__450, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setPricingSolverExactEnabled, 253, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__453)) __PYX_ERR(4, 253, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":265
 *         self.setBoolParam("pricingsolver/{}/exactenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables heuristic solving for the specified pricing solver.
 * 
 */
  __pyx_codeobj__454 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__450, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setPricingSolverHeuristicEnabled, 265, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__454)) __PYX_ERR(4, 265, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":277
 *         self.setBoolParam("pricingsolver/{}/heurenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a constraint classifier
 * 
 */
  __pyx_tuple__455 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_consclassifier, __pyx_n_s_consclassifiername, __pyx_n_s_desc, __pyx_n_s_priority, __pyx_n_s_enabled, __pyx_n_s_c_consclassifiername, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__455)) __PYX_ERR(4, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__455);
  __Pyx_GIVEREF(__pyx_tuple__455);
  __pyx_codeobj__456 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__455, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includeConsClassifier, 277, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__456)) __PYX_ERR(4, 277, __pyx_L1_error)
  __pyx_tuple__457 = PyTuple_Pack(2, __pyx_int_0, Py_True); if (unlikely(!__pyx_tuple__457)) __PYX_ERR(4, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__457);
  __Pyx_GIVEREF(__pyx_tuple__457);

  /* "pygcgopt/gcg.pyx":294
 *         Py_INCREF(consclassifier)
 * 
 *     def getNConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all constraint classifiers
 * 
 */
  __pyx_tuple__458 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_n_consclassifiers); if (unlikely(!__pyx_tuple__458)) __PYX_ERR(4, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__458);
  __Pyx_GIVEREF(__pyx_tuple__458);
  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__458, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getNConsClassifiers, 294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(4, 294, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":303
 *         return n_consclassifiers
 * 
 *     def listConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all constraint classifiers that are currently included
 * 
 */
  __pyx_tuple__460 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n_consclassifiers, __pyx_n_s_consclassifiers, __pyx_n_s_i); if (unlikely(!__pyx_tuple__460)) __PYX_ERR(4, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__460);
  __Pyx_GIVEREF(__pyx_tuple__460);
  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__460, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listConsClassifiers, 303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(4, 303, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":313
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]
 * 
 *     def includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a variable classifier
 * 
 */
  __pyx_tuple__462 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_varclassifier, __pyx_n_s_varclassifiername, __pyx_n_s_desc, __pyx_n_s_priority, __pyx_n_s_enabled, __pyx_n_s_c_varclassifiername, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__462)) __PYX_ERR(4, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__462);
  __Pyx_GIVEREF(__pyx_tuple__462);
  __pyx_codeobj__463 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__462, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includeVarClassifier, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__463)) __PYX_ERR(4, 313, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":330
 *         Py_INCREF(varclassifier)
 * 
 *     def getNVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all variable classifiers
 * 
 */
  __pyx_tuple__464 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_n_varclassifiers); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(4, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__464);
  __Pyx_GIVEREF(__pyx_tuple__464);
  __pyx_codeobj__465 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__464, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getNVarClassifiers, 330, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__465)) __PYX_ERR(4, 330, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":339
 *         return n_varclassifiers
 * 
 *     def listVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all variable classifiers that are currently included
 * 
 */
  __pyx_tuple__466 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n_varclassifiers, __pyx_n_s_varclassifiers, __pyx_n_s_i); if (unlikely(!__pyx_tuple__466)) __PYX_ERR(4, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__466);
  __Pyx_GIVEREF(__pyx_tuple__466);
  __pyx_codeobj__467 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__466, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listVarClassifiers, 339, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__467)) __PYX_ERR(4, 339, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":349
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]
 * 
 *     def setVarClassifierEnabled(self, varclassifier_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """enables or disables a variable classifier
 * 
 */
  __pyx_tuple__468 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_varclassifier_name, __pyx_n_s_is_enabled); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(4, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__468);
  __Pyx_GIVEREF(__pyx_tuple__468);
  __pyx_codeobj__469 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__468, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setVarClassifierEnabled, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(4, 349, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":360
 *         self.setBoolParam("detection/classification/varclassifier/{}/enabled".format(varclassifier_name), is_enabled)
 * 
 *     def includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False):             # <<<<<<<<<<<<<<
 *         """includes a detector
 * 
 */
  __pyx_tuple__470 = PyTuple_Pack(20, __pyx_n_s_self, __pyx_n_s_detector, __pyx_n_s_detectorname, __pyx_n_s_decchar, __pyx_n_s_desc, __pyx_n_s_freqcallround, __pyx_n_s_maxcallround, __pyx_n_s_mincallround, __pyx_n_s_freqcallroundoriginal, __pyx_n_s_maxcallroundoriginal, __pyx_n_s_mincallroundoriginal, __pyx_n_s_priority, __pyx_n_s_enabled, __pyx_n_s_enabledfinishing, __pyx_n_s_enabledpostprocessing, __pyx_n_s_skip, __pyx_n_s_usefulrecall, __pyx_n_s_c_detectorname, __pyx_n_s_c_decchar, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__470)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__470);
  __Pyx_GIVEREF(__pyx_tuple__470);
  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(17, 0, 0, 20, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__470, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includeDetector, 360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(4, 360, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":386
 *         Py_INCREF(detector)
 * 
 *     def includeScore(self, Score score, scorename, shortname, desc):             # <<<<<<<<<<<<<<
 *         """includes a score
 * 
 */
  __pyx_tuple__472 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_score, __pyx_n_s_scorename, __pyx_n_s_shortname, __pyx_n_s_desc, __pyx_n_s_c_scorename, __pyx_n_s_c_shortname, __pyx_n_s_c_desc); if (unlikely(!__pyx_tuple__472)) __PYX_ERR(4, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__472);
  __Pyx_GIVEREF(__pyx_tuple__472);
  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__472, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_includeScore, 386, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(4, 386, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":405
 *         Py_INCREF(score)
 * 
 *     def listDetectors(self):             # <<<<<<<<<<<<<<
 *         """Lists all detectors that are currently included
 * 
 */
  __pyx_tuple__474 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n_detectors, __pyx_n_s_detectors, __pyx_n_s_i); if (unlikely(!__pyx_tuple__474)) __PYX_ERR(4, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__474);
  __Pyx_GIVEREF(__pyx_tuple__474);
  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__474, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listDetectors, 405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(4, 405, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":421
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]
 * 
 *     def listScores(self):             # <<<<<<<<<<<<<<
 *         """Lists all scores that are currently included
 * 
 */
  __pyx_tuple__476 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n_scores, __pyx_n_s_scores, __pyx_n_s_i); if (unlikely(!__pyx_tuple__476)) __PYX_ERR(4, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__476);
  __Pyx_GIVEREF(__pyx_tuple__476);
  __pyx_codeobj__477 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_listScores, 421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__477)) __PYX_ERR(4, 421, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":431
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]
 * 
 *     def setDetectorEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for detecting partial decompositions.
 * 
 */
  __pyx_tuple__478 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_detector_name, __pyx_n_s_is_enabled); if (unlikely(!__pyx_tuple__478)) __PYX_ERR(4, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__478);
  __Pyx_GIVEREF(__pyx_tuple__478);
  __pyx_codeobj__479 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setDetectorEnabled, 431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(4, 431, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":446
 *         self.setBoolParam("detection/detectors/{}/enabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorFinishingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for finishing partial decompositions.
 * 
 */
  __pyx_codeobj__480 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setDetectorFinishingEnabled, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__480)) __PYX_ERR(4, 446, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":459
 *         self.setBoolParam("detection/detectors/{}/finishingenabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for postprocessing partial decompositions.
 * 
 */
  __pyx_codeobj__481 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setDetectorPostprocessingEnabled, 459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__481)) __PYX_ERR(4, 459, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":472
 *         self.setBoolParam("detection/detectors/{}/postprocessingenabled".format(detector_name), is_enabled)
 * 
 *     def getMasterProb(self):             # <<<<<<<<<<<<<<
 *         """Provides access to the GCG master problem.
 * 
 */
  __pyx_tuple__482 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_master_prob); if (unlikely(!__pyx_tuple__482)) __PYX_ERR(4, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__482);
  __Pyx_GIVEREF(__pyx_tuple__482);
  __pyx_codeobj__483 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__482, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getMasterProb, 472, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__483)) __PYX_ERR(4, 472, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":480
 *         return GCGMasterModel.create(master_prob)
 * 
 *     def setGCGSeparating(self, setting):             # <<<<<<<<<<<<<<
 *         """Sets parameter settings of all separators
 * 
 */
  __pyx_tuple__484 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_setting); if (unlikely(!__pyx_tuple__484)) __PYX_ERR(4, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__484);
  __Pyx_GIVEREF(__pyx_tuple__484);
  __pyx_codeobj__485 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__484, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_setGCGSeparating, 480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__485)) __PYX_ERR(4, 480, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":488
 *         PY_SCIP_CALL(GCGsetSeparators(self._scip, setting))
 * 
 *     def writeAllDecomps(self, directory="alldecompositions/", extension="dec", bool original=True, bool presolved=True, createDirectory=True):             # <<<<<<<<<<<<<<
 *         """Writes all decompositions to disk
 * 
 */
  __pyx_tuple__486 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_directory, __pyx_n_s_extension, __pyx_n_s_original, __pyx_n_s_presolved, __pyx_n_s_createDirectory, __pyx_n_s_c_directory, __pyx_n_s_c_extension); if (unlikely(!__pyx_tuple__486)) __PYX_ERR(4, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__486);
  __Pyx_GIVEREF(__pyx_tuple__486);
  __pyx_codeobj__487 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__486, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_writeAllDecomps, 488, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__487)) __PYX_ERR(4, 488, __pyx_L1_error)
  __pyx_tuple__488 = PyTuple_Pack(5, __pyx_kp_u_alldecompositions, __pyx_n_u_dec, Py_True, Py_True, Py_True); if (unlikely(!__pyx_tuple__488)) __PYX_ERR(4, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__488);
  __Pyx_GIVEREF(__pyx_tuple__488);

  /* "pygcgopt/gcg.pyx":501
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 * 
 *     def getMastervars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the master variables corresponding to the variable of original problem
 * 
 */
  __pyx_tuple__489 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_n_vars, __pyx_n_s_mastervars, __pyx_n_s_i); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(4, 501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__489);
  __Pyx_GIVEREF(__pyx_tuple__489);
  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getMastervars, 501, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(4, 501, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__491 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__491)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__492 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":524
 *         return model
 * 
 *     def createGcgCol(self, probnr, variables, vals, bool isray, redcost):             # <<<<<<<<<<<<<<
 *         """create a gcg column
 * 
 */
  __pyx_tuple__493 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_probnr, __pyx_n_s_variables, __pyx_n_s_vals, __pyx_n_s_isray, __pyx_n_s_redcost, __pyx_n_s_gcg_col, __pyx_n_s_nvars, __pyx_n_s_c_vars, __pyx_n_s_c_vals, __pyx_n_s_i, __pyx_n_s_pyGCGCol); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(4, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__493);
  __Pyx_GIVEREF(__pyx_tuple__493);
  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_createGcgCol, 524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(4, 524, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__495 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__495)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":564
 *         return model
 * 
 *     def addCol(self, GCGColumn col):             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 */
  __pyx_tuple__497 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_col); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(4, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__497);
  __Pyx_GIVEREF(__pyx_tuple__497);
  __pyx_codeobj__498 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__497, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_addCol, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(4, 564, __pyx_L1_error)

  /* "pygcgopt/gcg.pyx":567
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 *     def getOrigvars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the original variables corresponding to the variable of master problem
 * 
 */
  __pyx_tuple__499 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_var, __pyx_n_s_n_vars, __pyx_n_s_originalvars, __pyx_n_s_i); if (unlikely(!__pyx_tuple__499)) __PYX_ERR(4, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__499);
  __Pyx_GIVEREF(__pyx_tuple__499);
  __pyx_codeobj__500 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__499, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_pygcgopt_gcg_pyx, __pyx_n_s_getOrigvars, 567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__500)) __PYX_ERR(4, 567, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__503 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(5, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(5, 3, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __pyx_unpickle_Detector(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_tuple__505 = 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__505)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__505);
  __Pyx_GIVEREF(__pyx_tuple__505);
  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Detector, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PricingSolver, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Score, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__509 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ConsClassifier, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__510 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_VarClassifier, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__512 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PY_USERGIVEN, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__512)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_codeobj__514 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__514)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
  if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(4, 1, __pyx_L1_error);
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_24087813 = PyInt_FromLong(24087813L); if (unlikely(!__pyx_int_24087813)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_37557029 = PyInt_FromLong(37557029L); if (unlikely(!__pyx_int_37557029)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_76513566 = PyInt_FromLong(76513566L); if (unlikely(!__pyx_int_76513566)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_104261058 = PyInt_FromLong(104261058L); if (unlikely(!__pyx_int_104261058)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_108959872 = PyInt_FromLong(108959872L); if (unlikely(!__pyx_int_108959872)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_128380825 = PyInt_FromLong(128380825L); if (unlikely(!__pyx_int_128380825)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_141772857 = PyInt_FromLong(141772857L); if (unlikely(!__pyx_int_141772857)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_160002037 = PyInt_FromLong(160002037L); if (unlikely(!__pyx_int_160002037)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_193403919 = PyInt_FromLong(193403919L); if (unlikely(!__pyx_int_193403919)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_228825662 = PyInt_FromLong(228825662L); if (unlikely(!__pyx_int_228825662)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_229442799 = PyInt_FromLong(229442799L); if (unlikely(!__pyx_int_229442799)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_238750788 = PyInt_FromLong(238750788L); if (unlikely(!__pyx_int_238750788)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_248330301 = PyInt_FromLong(248330301L); if (unlikely(!__pyx_int_248330301)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_int_260020090 = PyInt_FromLong(260020090L); if (unlikely(!__pyx_int_260020090)) __PYX_ERR(4, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_globals ### */

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  return 0;
}
/* #### Code section: init_module ### */

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
  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("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __pyx_vtabptr_8pygcgopt_3gcg_DetProbData = &__pyx_vtable_8pygcgopt_3gcg_DetProbData;
  __pyx_vtable_8pygcgopt_3gcg_DetProbData.create = (PyObject *(*)(gcg::DETPROBDATA *))__pyx_f_8pygcgopt_3gcg_11DetProbData_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_DetProbData = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_DetProbData_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_DetProbData)) __PYX_ERR(9, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_DetProbData_spec, __pyx_ptype_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_DetProbData = &__pyx_type_8pygcgopt_3gcg_DetProbData;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_DetProbData->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_DetProbData->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_DetProbData->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_DetProbData->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_vtabptr_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DetProbData, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_DetProbData) < 0) __PYX_ERR(9, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_ConsPart = &__pyx_vtable_8pygcgopt_3gcg_ConsPart;
  __pyx_vtable_8pygcgopt_3gcg_ConsPart.create = (PyObject *(*)(gcg::ConsPartition *, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *))__pyx_f_8pygcgopt_3gcg_8ConsPart_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_ConsPart = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_ConsPart_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_ConsPart)) __PYX_ERR(1, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_ConsPart_spec, __pyx_ptype_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_ConsPart = &__pyx_type_8pygcgopt_3gcg_ConsPart;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_ConsPart->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_ConsPart->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_ConsPart->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_ConsPart->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_vtabptr_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConsPart, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_ConsPart) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_VarPart = &__pyx_vtable_8pygcgopt_3gcg_VarPart;
  __pyx_vtable_8pygcgopt_3gcg_VarPart.create = (PyObject *(*)(gcg::VarPartition *, struct __pyx_obj_8pygcgopt_3gcg_DetProbData *))__pyx_f_8pygcgopt_3gcg_7VarPart_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_VarPart = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_VarPart_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_VarPart)) __PYX_ERR(1, 200, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_VarPart_spec, __pyx_ptype_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_VarPart = &__pyx_type_8pygcgopt_3gcg_VarPart;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_VarPart->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_VarPart->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_VarPart->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_VarPart->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_vtabptr_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VarPart, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_VarPart) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_GCGColumn = &__pyx_vtable_8pygcgopt_3gcg_GCGColumn;
  __pyx_vtable_8pygcgopt_3gcg_GCGColumn.create = (PyObject *(*)(GCG_COL *))__pyx_f_8pygcgopt_3gcg_9GCGColumn_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_GCGColumn = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_GCGColumn_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_GCGColumn)) __PYX_ERR(4, 578, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_GCGColumn_spec, __pyx_ptype_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_GCGColumn = &__pyx_type_8pygcgopt_3gcg_GCGColumn;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_GCGColumn->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_GCGColumn->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_GCGColumn->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_GCGColumn->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_GCGColumn, __pyx_vtabptr_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GCGColumn, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGColumn) < 0) __PYX_ERR(4, 578, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_Detector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_Detector_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_Detector)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_Detector_spec, __pyx_ptype_8pygcgopt_3gcg_Detector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_Detector = &__pyx_type_8pygcgopt_3gcg_Detector;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_Detector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_Detector->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_Detector->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_Detector->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_Detector->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Detector, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_Detector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_Detector) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PricingSolver = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PricingSolver_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PricingSolver)) __PYX_ERR(7, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PricingSolver_spec, __pyx_ptype_8pygcgopt_3gcg_PricingSolver) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PricingSolver = &__pyx_type_8pygcgopt_3gcg_PricingSolver;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PricingSolver) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PricingSolver->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PricingSolver->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PricingSolver->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PricingSolver->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PricingSolver, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PricingSolver) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PricingSolver) < 0) __PYX_ERR(7, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_Score = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_Score_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_Score)) __PYX_ERR(8, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_Score_spec, __pyx_ptype_8pygcgopt_3gcg_Score) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_Score = &__pyx_type_8pygcgopt_3gcg_Score;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_Score) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_Score->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_Score->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_Score->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_Score->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Score, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_Score) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_Score) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_PartialDecomposition = &__pyx_vtable_8pygcgopt_3gcg_PartialDecomposition;
  __pyx_vtable_8pygcgopt_3gcg_PartialDecomposition.create = (PyObject *(*)(gcg::PARTIALDECOMP *))__pyx_f_8pygcgopt_3gcg_20PartialDecomposition_create;
  __pyx_vtable_8pygcgopt_3gcg_PartialDecomposition._PartialDecomposition__generate_visualization = (PyObject *(*)(struct __pyx_obj_8pygcgopt_3gcg_PartialDecomposition *, struct __pyx_opt_args_8pygcgopt_3gcg_20PartialDecomposition___generate_visualization *__pyx_optional_args))__pyx_f_8pygcgopt_3gcg_20PartialDecomposition__PartialDecomposition__generate_visualization;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PartialDecomposition_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition)) __PYX_ERR(2, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PartialDecomposition_spec, __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition = &__pyx_type_8pygcgopt_3gcg_PartialDecomposition;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_vtabptr_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PartialDecomposition, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PartialDecomposition) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_ConsClassifier = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_ConsClassifier_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_ConsClassifier)) __PYX_ERR(3, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_ConsClassifier_spec, __pyx_ptype_8pygcgopt_3gcg_ConsClassifier) < 0) __PYX_ERR(3, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_ConsClassifier = &__pyx_type_8pygcgopt_3gcg_ConsClassifier;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_ConsClassifier) < 0) __PYX_ERR(3, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_ConsClassifier->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_ConsClassifier->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_ConsClassifier->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_ConsClassifier->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConsClassifier, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_ConsClassifier) < 0) __PYX_ERR(3, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_ConsClassifier) < 0) __PYX_ERR(3, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_VarClassifier = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_VarClassifier_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_VarClassifier)) __PYX_ERR(10, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_VarClassifier_spec, __pyx_ptype_8pygcgopt_3gcg_VarClassifier) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_VarClassifier = &__pyx_type_8pygcgopt_3gcg_VarClassifier;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_VarClassifier) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_VarClassifier->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_VarClassifier->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_VarClassifier->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_VarClassifier->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VarClassifier, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_VarClassifier) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_VarClassifier) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS)) __PYX_ERR(4, 47, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS_spec, __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS) < 0) __PYX_ERR(4, 47, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS = &__pyx_type_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS) < 0) __PYX_ERR(4, 47, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PY_GCG_PRICINGSTATUS, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS) < 0) __PYX_ERR(4, 47, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS) < 0) __PYX_ERR(4, 47, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN)) __PYX_ERR(4, 55, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN_spec, __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN) < 0) __PYX_ERR(4, 55, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN = &__pyx_type_8pygcgopt_3gcg_PY_USERGIVEN;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN) < 0) __PYX_ERR(4, 55, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PY_USERGIVEN, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN) < 0) __PYX_ERR(4, 55, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN) < 0) __PYX_ERR(4, 55, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO)) __PYX_ERR(4, 61, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO_spec, __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO) < 0) __PYX_ERR(4, 61, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO = &__pyx_type_8pygcgopt_3gcg_PY_VAR_DECOMPINFO;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO) < 0) __PYX_ERR(4, 61, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PY_VAR_DECOMPINFO, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO) < 0) __PYX_ERR(4, 61, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO) < 0) __PYX_ERR(4, 61, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO_spec, NULL); if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO)) __PYX_ERR(4, 67, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO_spec, __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO) < 0) __PYX_ERR(4, 67, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO = &__pyx_type_8pygcgopt_3gcg_PY_CONS_DECOMPINFO;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO) < 0) __PYX_ERR(4, 67, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PY_CONS_DECOMPINFO, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO) < 0) __PYX_ERR(4, 67, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO) < 0) __PYX_ERR(4, 67, __pyx_L1_error)
  #endif
  __pyx_t_1 = PyImport_ImportModule("pyscipopt.scip"); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_9pyscipopt_4scip_Model = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Model", sizeof(struct __pyx_obj_9pyscipopt_4scip_Model), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Model),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Model) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Model = (struct __pyx_vtabstruct_9pyscipopt_4scip_Model*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Model); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Model)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_vtabptr_8pygcgopt_3gcg_Model = &__pyx_vtable_8pygcgopt_3gcg_Model;
  __pyx_vtable_8pygcgopt_3gcg_Model.__pyx_base = *__pyx_vtabptr_9pyscipopt_4scip_Model;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_9pyscipopt_4scip_Model); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_8pygcgopt_3gcg_Model = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_Model_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_Model)) __PYX_ERR(4, 72, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_Model_spec, __pyx_ptype_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_Model = &__pyx_type_8pygcgopt_3gcg_Model;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_8pygcgopt_3gcg_Model->tp_dealloc = __pyx_ptype_9pyscipopt_4scip_Model->tp_dealloc;
  __pyx_ptype_8pygcgopt_3gcg_Model->tp_base = __pyx_ptype_9pyscipopt_4scip_Model;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_Model->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_Model->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_Model->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_Model->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_vtabptr_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Model, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  if (__pyx_ptype_8pygcgopt_3gcg_Model->tp_weaklistoffset == 0) __pyx_ptype_8pygcgopt_3gcg_Model->tp_weaklistoffset = offsetof(struct __pyx_obj_8pygcgopt_3gcg_Model, __pyx_base.__weakref__);
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_Model) < 0) __PYX_ERR(4, 72, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_GCGPricingModel = &__pyx_vtable_8pygcgopt_3gcg_GCGPricingModel;
  __pyx_vtable_8pygcgopt_3gcg_GCGPricingModel.__pyx_base = *__pyx_vtabptr_9pyscipopt_4scip_Model;
  __pyx_vtable_8pygcgopt_3gcg_GCGPricingModel.__pyx_base.create = (PyObject *(*)(SCIP *))__pyx_f_8pygcgopt_3gcg_15GCGPricingModel_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_9pyscipopt_4scip_Model); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_GCGPricingModel_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel)) __PYX_ERR(4, 512, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_GCGPricingModel_spec, __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel = &__pyx_type_8pygcgopt_3gcg_GCGPricingModel;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_dealloc = __pyx_ptype_9pyscipopt_4scip_Model->tp_dealloc;
  __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_base = __pyx_ptype_9pyscipopt_4scip_Model;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel, __pyx_vtabptr_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GCGPricingModel, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  if (__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_weaklistoffset == 0) __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel->tp_weaklistoffset = offsetof(struct __pyx_obj_8pygcgopt_3gcg_GCGPricingModel, __pyx_base.__weakref__);
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGPricingModel) < 0) __PYX_ERR(4, 512, __pyx_L1_error)
  #endif
  __pyx_vtabptr_8pygcgopt_3gcg_GCGMasterModel = &__pyx_vtable_8pygcgopt_3gcg_GCGMasterModel;
  __pyx_vtable_8pygcgopt_3gcg_GCGMasterModel.__pyx_base = *__pyx_vtabptr_9pyscipopt_4scip_Model;
  __pyx_vtable_8pygcgopt_3gcg_GCGMasterModel.__pyx_base.create = (PyObject *(*)(SCIP *))__pyx_f_8pygcgopt_3gcg_14GCGMasterModel_create;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_9pyscipopt_4scip_Model); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_8pygcgopt_3gcg_GCGMasterModel_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel)) __PYX_ERR(4, 552, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_8pygcgopt_3gcg_GCGMasterModel_spec, __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  #else
  __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel = &__pyx_type_8pygcgopt_3gcg_GCGMasterModel;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_dealloc = __pyx_ptype_9pyscipopt_4scip_Model->tp_dealloc;
  __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_base = __pyx_ptype_9pyscipopt_4scip_Model;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_dictoffset && __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel, __pyx_vtabptr_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GCGMasterModel, (PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  if (__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_weaklistoffset == 0) __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel->tp_weaklistoffset = offsetof(struct __pyx_obj_8pygcgopt_3gcg_GCGMasterModel, __pyx_base.__weakref__);
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_8pygcgopt_3gcg_GCGMasterModel) < 0) __PYX_ERR(4, 552, __pyx_L1_error)
  #endif
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule("pyscipopt.scip"); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 1887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_9pyscipopt_4scip_Expr = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Expr", sizeof(struct __pyx_obj_9pyscipopt_4scip_Expr), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Expr),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Expr) __PYX_ERR(11, 1887, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Event = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Event", sizeof(struct __pyx_obj_9pyscipopt_4scip_Event), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Event),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Event) __PYX_ERR(11, 1890, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Event = (struct __pyx_vtabstruct_9pyscipopt_4scip_Event*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Event); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Event)) __PYX_ERR(11, 1890, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Column = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Column", sizeof(struct __pyx_obj_9pyscipopt_4scip_Column), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Column),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Column) __PYX_ERR(11, 1897, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Column = (struct __pyx_vtabstruct_9pyscipopt_4scip_Column*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Column); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Column)) __PYX_ERR(11, 1897, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Row = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Row", sizeof(struct __pyx_obj_9pyscipopt_4scip_Row), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Row),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Row) __PYX_ERR(11, 1905, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Row = (struct __pyx_vtabstruct_9pyscipopt_4scip_Row*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Row); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Row)) __PYX_ERR(11, 1905, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_NLRow = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "NLRow", sizeof(struct __pyx_obj_9pyscipopt_4scip_NLRow), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_NLRow),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_NLRow) __PYX_ERR(11, 1913, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_NLRow = (struct __pyx_vtabstruct_9pyscipopt_4scip_NLRow*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_NLRow); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_NLRow)) __PYX_ERR(11, 1913, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Solution = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Solution", sizeof(struct __pyx_obj_9pyscipopt_4scip_Solution), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Solution),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Solution) __PYX_ERR(11, 1921, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Solution = (struct __pyx_vtabstruct_9pyscipopt_4scip_Solution*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Solution); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Solution)) __PYX_ERR(11, 1921, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_DomainChanges = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "DomainChanges", sizeof(struct __pyx_obj_9pyscipopt_4scip_DomainChanges), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_DomainChanges),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_DomainChanges) __PYX_ERR(11, 1930, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_DomainChanges = (struct __pyx_vtabstruct_9pyscipopt_4scip_DomainChanges*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_DomainChanges); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_DomainChanges)) __PYX_ERR(11, 1930, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_BoundChange = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "BoundChange", sizeof(struct __pyx_obj_9pyscipopt_4scip_BoundChange), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_BoundChange),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_BoundChange) __PYX_ERR(11, 1936, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_BoundChange = (struct __pyx_vtabstruct_9pyscipopt_4scip_BoundChange*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_BoundChange); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_BoundChange)) __PYX_ERR(11, 1936, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Node = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Node", sizeof(struct __pyx_obj_9pyscipopt_4scip_Node), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Node),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Node) __PYX_ERR(11, 1942, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Node = (struct __pyx_vtabstruct_9pyscipopt_4scip_Node*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Node); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Node)) __PYX_ERR(11, 1942, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Variable = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Variable", sizeof(struct __pyx_obj_9pyscipopt_4scip_Variable), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Variable),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Variable) __PYX_ERR(11, 1950, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Variable = (struct __pyx_vtabstruct_9pyscipopt_4scip_Variable*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Variable); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Variable)) __PYX_ERR(11, 1950, __pyx_L1_error)
  __pyx_ptype_9pyscipopt_4scip_Constraint = __Pyx_ImportType_3_0_11(__pyx_t_1, "pyscipopt.scip", "Constraint", sizeof(struct __pyx_obj_9pyscipopt_4scip_Constraint), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(struct __pyx_obj_9pyscipopt_4scip_Constraint),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_9pyscipopt_4scip_Constraint) __PYX_ERR(11, 1958, __pyx_L1_error)
  __pyx_vtabptr_9pyscipopt_4scip_Constraint = (struct __pyx_vtabstruct_9pyscipopt_4scip_Constraint*)__Pyx_GetVtable(__pyx_ptype_9pyscipopt_4scip_Constraint); if (unlikely(!__pyx_vtabptr_9pyscipopt_4scip_Constraint)) __PYX_ERR(11, 1958, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", 
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(12, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyBoolObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(13, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyComplexObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(14, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

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;
}


#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_gcg(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_gcg},
  {0, NULL}
};
#endif

#ifdef __cplusplus
namespace {
  struct PyModuleDef __pyx_moduledef =
  #else
  static struct PyModuleDef __pyx_moduledef =
  #endif
  {
      PyModuleDef_HEAD_INIT,
      "gcg",
      0, /* m_doc */
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      0, /* m_size */
    #elif CYTHON_USE_MODULE_STATE
      sizeof(__pyx_mstate), /* 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
    #if CYTHON_USE_MODULE_STATE
      __pyx_m_traverse, /* m_traverse */
      __pyx_m_clear, /* m_clear */
      NULL /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      NULL /* m_free */
    #endif
  };
  #ifdef __cplusplus
} /* anonymous namespace */
#endif
#endif

#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 initgcg(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initgcg(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_gcg(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_gcg(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;
}
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
#else
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)
#endif
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
#if CYTHON_COMPILING_IN_LIMITED_API
            result = PyModule_AddObject(module, to_name, value);
#else
            result = PyDict_SetItemString(moddict, to_name, value);
#endif
        }
        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, PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    CYTHON_UNUSED_VAR(def);
    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;
#if CYTHON_COMPILING_IN_LIMITED_API
    moddict = module;
#else
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
#endif
    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_gcg(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  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_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'gcg' 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
  /*--- 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("gcg", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  if (unlikely(!__pyx_m)) __PYX_ERR(4, 1, __pyx_L1_error)
  #elif CYTHON_USE_MODULE_STATE
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1, __pyx_L1_error)
  {
    int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
    __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "gcg" pseudovariable */
    if (unlikely((add_module_result < 0))) __PYX_ERR(4, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  if (unlikely(!__pyx_m)) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #endif
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(4, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(4, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #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_gcg(void)", 0);
  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(4, 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(4, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(4, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(4, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(4, 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
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants() < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(4, 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(4, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_pygcgopt__gcg) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(4, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "pygcgopt.gcg")) {
      if (unlikely((PyDict_SetItemString(modules, "pygcgopt.gcg", __pyx_m) < 0))) __PYX_ERR(4, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(4, 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(4, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(4, 1, __pyx_L1_error)
  (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(4, 1, __pyx_L1_error)
  #endif

  /* "pygcgopt/gcg.pyx":3
 * # distutils: language = c++
 * 
 * from pyscipopt.scip import PY_SCIP_CALL             # <<<<<<<<<<<<<<
 * from pyscipopt.scip cimport Model as SCIPModel
 * from pyscipopt.scip cimport Variable, Constraint, Solution, SCIP_RESULT, SCIP_DIDNOTRUN, SCIPgetStage, SCIP_STAGE, SCIP_STAGE_PRESOLVED, SCIPvarSetData, SCIPgetBestSol
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_PY_SCIP_CALL);
  __Pyx_GIVEREF(__pyx_n_s_PY_SCIP_CALL);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PY_SCIP_CALL)) __PYX_ERR(4, 3, __pyx_L1_error);
  __pyx_t_3 = __Pyx_Import(__pyx_n_s_pyscipopt_scip, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 3, __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_PY_SCIP_CALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PY_SCIP_CALL, __pyx_t_2) < 0) __PYX_ERR(4, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":13
 * from libcpp cimport bool
 * 
 * from typing import List             # <<<<<<<<<<<<<<
 * 
 * from pygcgopt.util import str_conversion
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_n_s_List);
  __Pyx_GIVEREF(__pyx_n_s_List);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_List)) __PYX_ERR(4, 13, __pyx_L1_error);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_List); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_List, __pyx_t_3) < 0) __PYX_ERR(4, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":15
 * from typing import List
 * 
 * from pygcgopt.util import str_conversion             # <<<<<<<<<<<<<<
 * 
 * from pathlib import Path
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_str_conversion);
  __Pyx_GIVEREF(__pyx_n_s_str_conversion);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_str_conversion)) __PYX_ERR(4, 15, __pyx_L1_error);
  __pyx_t_3 = __Pyx_Import(__pyx_n_s_pygcgopt_util, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 15, __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_str_conversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_str_conversion, __pyx_t_2) < 0) __PYX_ERR(4, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":17
 * from pygcgopt.util import str_conversion
 * 
 * from pathlib import Path             # <<<<<<<<<<<<<<
 * import tempfile
 * import weakref
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_n_s_Path);
  __Pyx_GIVEREF(__pyx_n_s_Path);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Path)) __PYX_ERR(4, 17, __pyx_L1_error);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_pathlib, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Path, __pyx_t_3) < 0) __PYX_ERR(4, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":18
 * 
 * from pathlib import Path
 * import tempfile             # <<<<<<<<<<<<<<
 * import weakref
 * from copy import copy
 */
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_tempfile, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tempfile, __pyx_t_2) < 0) __PYX_ERR(4, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":19
 * from pathlib import Path
 * import tempfile
 * import weakref             # <<<<<<<<<<<<<<
 * from copy import copy
 * 
 */
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_weakref, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_weakref, __pyx_t_2) < 0) __PYX_ERR(4, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pygcgopt/gcg.pyx":20
 * import tempfile
 * import weakref
 * from copy import copy             # <<<<<<<<<<<<<<
 * 
 * from collections.abc import Iterable
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_copy);
  __Pyx_GIVEREF(__pyx_n_s_copy);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_copy)) __PYX_ERR(4, 20, __pyx_L1_error);
  __pyx_t_3 = __Pyx_Import(__pyx_n_s_copy, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 20, __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_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(4, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":22
 * from copy import copy
 * 
 * from collections.abc import Iterable             # <<<<<<<<<<<<<<
 * 
 * include "detector.pxi"
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_n_s_Iterable);
  __Pyx_GIVEREF(__pyx_n_s_Iterable);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Iterable)) __PYX_ERR(4, 22, __pyx_L1_error);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections_abc, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Iterable, __pyx_t_3) < 0) __PYX_ERR(4, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detector.pxi":6
 *     cdef public str detectorname
 * 
 *     def freeDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of detector'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_1freeDetector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_freeDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_freeDetector, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":10
 *         pass
 * 
 *     def initDetector(self):             # <<<<<<<<<<<<<<
 *         '''initializes detector'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_3initDetector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_initDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_initDetector, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":14
 *         pass
 * 
 *     def exitDetector(self):             # <<<<<<<<<<<<<<
 *         '''calls exit method of detector'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_5exitDetector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_exitDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_exitDetector, __pyx_t_2) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":18
 *         pass
 * 
 *     def propagatePartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''refines a partial decomposition inside detection loop'''
 *         return {}
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_7propagatePartialdec, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_propagatePartialdec, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_propagatePartialdec, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":22
 *         return {}
 * 
 *     def finishPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''completes a partial decomposition when called in detection loop'''
 *         return {}
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_9finishPartialdec, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_finishPartialdec, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_finishPartialdec, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":26
 *         return {}
 * 
 *     def postprocessPartialdec(self, detprobdata, workonpartialdec):             # <<<<<<<<<<<<<<
 *         '''postprocess a complete decomposition, called after detection loop'''
 *         return {}
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_11postprocessPartialdec, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_postprocessPartialdec, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_postprocessPartialdec, __pyx_t_2) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":30
 *         return {}
 * 
 *     def setParamAggressive(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting aggressive is chosen'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_13setParamAggressive, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_setParamAggressive, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_setParamAggressive, __pyx_t_2) < 0) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":34
 *         pass
 * 
 *     def setParamDefault(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting default is chosen'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_15setParamDefault, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_setParamDefault, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_setParamDefault, __pyx_t_2) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/detector.pxi":38
 *         pass
 * 
 *     def setParamFast(self):             # <<<<<<<<<<<<<<
 *         '''called if the detection emphasis setting fast is chosen'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_17setParamFast, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector_setParamFast, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_setParamFast, __pyx_t_2) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Detector, (type(self), 0xdad04ef, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Detector__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8Detector_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Detector___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Detector, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Detector);

  /* "src/pygcgopt/pricing_solver.pxi":7
 *     cdef public str solvername
 * 
 *     def freeSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_1freeSolver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_freeSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_freeSolver, __pyx_t_2) < 0) __PYX_ERR(7, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":10
 *         pass
 * 
 *     def initSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_3initSolver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_initSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_initSolver, __pyx_t_2) < 0) __PYX_ERR(7, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":13
 *         pass
 * 
 *     def exitSolver(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_5exitSolver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_exitSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_exitSolver, __pyx_t_2) < 0) __PYX_ERR(7, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":16
 *         pass
 * 
 *     def initSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_7initSolution, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_initSolution, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_initSolution, __pyx_t_2) < 0) __PYX_ERR(7, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":19
 *         pass
 * 
 *     def exitSolution(self):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_9exitSolution, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_exitSolution, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_exitSolution, __pyx_t_2) < 0) __PYX_ERR(7, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":22
 *         pass
 * 
 *     def updateSolver(self, pricingprob, probnr, varobjschanged, varbndschanged, consschanged):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_11updateSolver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_updateSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_updateSolver, __pyx_t_2) < 0) __PYX_ERR(7, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":25
 *         pass
 * 
 *     def solve(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_13solve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_solve, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_solve, __pyx_t_2) < 0) __PYX_ERR(7, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/pricing_solver.pxi":28
 *         return {}
 * 
 *     def solveHeuristic(self, pricingprob, probnr, dualsolconv):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_15solveHeuristic, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver_solveHeuristic, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_solveHeuristic, __pyx_t_2) < 0) __PYX_ERR(7, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_17__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PricingSolver, (type(self), 0x9896ff5, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PricingSolver__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13PricingSolver_19__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PricingSolver___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PricingSolver, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PricingSolver);

  /* "src/pygcgopt/score.pxi":7
 *     cdef public str scorename
 * 
 *     def scorefree(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of score'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Score_1scorefree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Score_scorefree, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Score, __pyx_n_s_scorefree, __pyx_t_2) < 0) __PYX_ERR(8, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Score);

  /* "src/pygcgopt/score.pxi":11
 *         pass
 * 
 *     def scorecalculate(self, partialdec):             # <<<<<<<<<<<<<<
 *         '''calls calculate method of score'''
 *         return {}
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Score_3scorecalculate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Score_scorecalculate, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Score, __pyx_n_s_scorecalculate, __pyx_t_2) < 0) __PYX_ERR(8, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Score);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Score_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Score___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Score, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Score);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Score, (type(self), 0x636e5c2, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Score__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Score_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Score___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Score, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Score);

  /* "src/pygcgopt/partition.pxi":13
 *         return new_ConsPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_1getClassDescription, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getClassDescription, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getClassDescription, __pyx_t_2) < 0) __PYX_ERR(1, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":23
 *         return self.consPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_3getClassName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getClassName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getClassName, __pyx_t_2) < 0) __PYX_ERR(1, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":33
 *         return self.consPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_5getName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getName, __pyx_t_2) < 0) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":41
 *         return self.consPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_7getNClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getNClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getNClasses, __pyx_t_2) < 0) __PYX_ERR(1, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":49
 *         return self.consPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_9removeEmptyClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_removeEmptyClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_removeEmptyClasses, __pyx_t_2) < 0) __PYX_ERR(1, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":57
 *         return self.consPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_11setClassDescription, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_setClassDescription, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_setClassDescription, __pyx_t_2) < 0) __PYX_ERR(1, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":68
 *         self.consPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_13setClassName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_setClassName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_setClassName, __pyx_t_2) < 0) __PYX_ERR(1, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":79
 *         self.consPartition.setClassName(classindex, name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_15addClass, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_addClass, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_addClass, __pyx_t_2) < 0) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":95
 *         return self.consPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignConsToClass(self, Constraint cons, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a constraint to the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_17assignConsToClass, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_assignConsToClass, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_assignConsToClass, __pyx_t_2) < 0) __PYX_ERR(1, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":106
 *         self.consPartition.assignConsToClass(cpp_consindex, classindex)
 * 
 *     def getAllSubsets(self, both, only_master, only_pricing):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_19getAllSubsets, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getAllSubsets, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getAllSubsets, __pyx_t_2) < 0) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":120
 *         return self.consPartition.getAllSubsets(both, only_master, only_pricing)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_21getClassDecompInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getClassDecompInfo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getClassDecompInfo, __pyx_t_2) < 0) __PYX_ERR(1, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":130
 *         return self.consPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a constraint is assigned to
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_23getClassNameOfCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getClassNameOfCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getClassNameOfCons, __pyx_t_2) < 0) __PYX_ERR(1, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":141
 *         return self.consPartition.getClassNameOfCons(cpp_consindex).decode('utf-8')
 * 
 *     def getClassOfCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a constraint is assigned to
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_25getClassOfCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getClassOfCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getClassOfCons, __pyx_t_2) < 0) __PYX_ERR(1, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":152
 *         return self.consPartition.getClassOfCons(cpp_consindex)
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints of the constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_27getNConss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getNConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getNConss, __pyx_t_2) < 0) __PYX_ERR(1, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":160
 *         return self.consPartition.getNConss()
 * 
 *     def getNConssOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of constraints that are assigned to the classes
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_29getNConssOfClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_getNConssOfClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_getNConssOfClasses, __pyx_t_2) < 0) __PYX_ERR(1, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":168
 *         return self.consPartition.getNConssOfClasses()
 * 
 *     def isConsClassified(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is already assigned to a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_31isConsClassified, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_isConsClassified, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_isConsClassified, __pyx_t_2) < 0) __PYX_ERR(1, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":179
 *         return self.consPartition.isConsClassified(cpp_consindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns constraint partition with reduced number of classes
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_33reduceClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_reduceClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_reduceClasses, __pyx_t_2) < 0) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "src/pygcgopt/partition.pxi":190
 *         return ConsPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_35setClassDecompInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart_setClassDecompInfo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsPart, __pyx_n_s_setClassDecompInfo, __pyx_t_2) < 0) __PYX_ERR(1, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsPart);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_37__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.consPartition cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_8ConsPart_39__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsPart___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/partition.pxi":212
 *         return new_VarPart
 * 
 *     def getClassDescription(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the description of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_1getClassDescription, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getClassDescription, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getClassDescription, __pyx_t_2) < 0) __PYX_ERR(1, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":222
 *         return self.varPartition.getClassDescription(classindex).decode('utf-8')
 * 
 *     def getClassName(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the name of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_3getClassName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getClassName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getClassName, __pyx_t_2) < 0) __PYX_ERR(1, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":232
 *         return self.varPartition.getClassName(classindex).decode('utf-8')
 * 
 *     def getName(self):             # <<<<<<<<<<<<<<
 *         """returns the name of the variable partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_5getName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getName, __pyx_t_2) < 0) __PYX_ERR(1, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":240
 *         return self.varPartition.getName().decode('utf-8')
 * 
 *     def getNClasses(self):             # <<<<<<<<<<<<<<
 *         """returns the number of classes of the variable partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_7getNClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getNClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getNClasses, __pyx_t_2) < 0) __PYX_ERR(1, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":248
 *         return self.varPartition.getNClasses()
 * 
 *     def removeEmptyClasses(self):             # <<<<<<<<<<<<<<
 *         """removes all classes which do not have any assigned indices (classindices may change)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_9removeEmptyClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_removeEmptyClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_removeEmptyClasses, __pyx_t_2) < 0) __PYX_ERR(1, 248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":256
 *         return self.varPartition.removeEmptyClasses()
 * 
 *     def setClassDescription(self, classindex, desc):             # <<<<<<<<<<<<<<
 *         """sets the description of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_11setClassDescription, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_setClassDescription, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_setClassDescription, __pyx_t_2) < 0) __PYX_ERR(1, 256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":267
 *         self.varPartition.setClassDescription(classindex, c_desc)
 * 
 *     def setClassName(self, classindex, name):             # <<<<<<<<<<<<<<
 *         """sets the name of the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_13setClassName, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_setClassName, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_setClassName, __pyx_t_2) < 0) __PYX_ERR(1, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":278
 *         self.varPartition.setClassName(classindex, c_name)
 * 
 *     def addClass(self, name, desc, decompInfo):             # <<<<<<<<<<<<<<
 *         """adds a new class to the variable partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_15addClass, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_addClass, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_addClass, __pyx_t_2) < 0) __PYX_ERR(1, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":294
 *         return self.varPartition.addClass(c_name, c_desc, decompInfo)
 * 
 *     def assignVarToClass(self, Variable var, classindex):             # <<<<<<<<<<<<<<
 *         """assigns a variable to the class corresponding to the classindex
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_17assignVarToClass, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_assignVarToClass, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_assignVarToClass, __pyx_t_2) < 0) __PYX_ERR(1, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":305
 *         self.varPartition.assignVarToClass(cpp_varindex, classindex)
 * 
 *     def getAllSubsets(self, all, linking, master, block):             # <<<<<<<<<<<<<<
 *         """returns a list containing all possible subsets of the chosen classindices
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_19getAllSubsets, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getAllSubsets, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getAllSubsets, __pyx_t_2) < 0) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":321
 *         return self.varPartition.getAllSubsets(all, linking, master, block)
 * 
 *     def getClassDecompInfo(self, classindex):             # <<<<<<<<<<<<<<
 *         """returns the decomposition information of a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_21getClassDecompInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getClassDecompInfo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getClassDecompInfo, __pyx_t_2) < 0) __PYX_ERR(1, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":331
 *         return self.varPartition.getClassDecompInfo(classindex)
 * 
 *     def getClassNameOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the name of the class a variable is assigned to
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_23getClassNameOfVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getClassNameOfVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getClassNameOfVar, __pyx_t_2) < 0) __PYX_ERR(1, 331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":342
 *         return self.varPartition.getClassNameOfVar(cpp_varindex).decode('utf-8')
 * 
 *     def getClassOfVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the index of the class a variable is assigned to
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_25getClassOfVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getClassOfVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getClassOfVar, __pyx_t_2) < 0) __PYX_ERR(1, 342, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":353
 *         return self.varPartition.getClassOfVar(cpp_varindex)
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables of the variable partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_27getNVars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getNVars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getNVars, __pyx_t_2) < 0) __PYX_ERR(1, 353, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":361
 *         return self.varPartition.getNVars()
 * 
 *     def getNVarsOfClasses(self):             # <<<<<<<<<<<<<<
 *         """returns list with the numbers of variables that are assigned to the classes
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_29getNVarsOfClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_getNVarsOfClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_getNVarsOfClasses, __pyx_t_2) < 0) __PYX_ERR(1, 361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":369
 *         return self.varPartition.getNVarsOfClasses()
 * 
 *     def isVarClassified(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns whether a variable is already assigned to a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_31isVarClassified, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_isVarClassified, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_isVarClassified, __pyx_t_2) < 0) __PYX_ERR(1, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":380
 *         return self.varPartition.isVarClassified(cpp_varindex)
 * 
 *     def reduceClasses(self, maxNumberOfClasses):             # <<<<<<<<<<<<<<
 *         """returns variable partition with reduced number of classes
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_33reduceClasses, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_reduceClasses, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_reduceClasses, __pyx_t_2) < 0) __PYX_ERR(1, 380, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "src/pygcgopt/partition.pxi":391
 *         return VarPart.create(result, self.detProbData)
 * 
 *     def setClassDecompInfo(self, classindex, decompInfo):             # <<<<<<<<<<<<<<
 *         """sets the decomposition information of a class
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_35setClassDecompInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart_setClassDecompInfo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarPart, __pyx_n_s_setClassDecompInfo, __pyx_t_2) < 0) __PYX_ERR(1, 391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarPart);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_37__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.varPartition cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7VarPart_39__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarPart___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/decomposition.pxi":35
 *         return new_PartialDecomposition
 * 
 *     def __copy__(self):             # <<<<<<<<<<<<<<
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_5__copy__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition___copy, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_copy_2, __pyx_t_2) < 0) __PYX_ERR(2, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":38
 *         return PartialDecomposition.create(new PARTIALDECOMP(self.thisptr))
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return copy(self)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_copy, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(2, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":59
 *         self.thisptr.setSelected(cpp_selected)
 * 
 *     def addBlock(self):             # <<<<<<<<<<<<<<
 *         """adds a new block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_9addBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addBlock, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addBlock, __pyx_t_2) < 0) __PYX_ERR(2, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":67
 *         return result
 * 
 *     def assignOpenConssToMaster(self):             # <<<<<<<<<<<<<<
 *         """assigns open constraints to master
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_11assignOpenConssToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_assignOpenC, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_assignOpenConssToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":72
 *         self.thisptr.assignOpenConssToMaster()
 * 
 *     def isComplete(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is complete, i.e. it has no more open constraints and variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_13isComplete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isComplete, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isComplete, __pyx_t_2) < 0) __PYX_ERR(2, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":80
 *         return result
 * 
 *     def isTrivial(self):             # <<<<<<<<<<<<<<
 *         """gets whether this partialdec is considered to be trivial
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_15isTrivial, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isTrivial, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isTrivial, __pyx_t_2) < 0) __PYX_ERR(2, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":91
 *         return result
 * 
 *     def getNBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blocks
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_17getNBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNBlocks, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":99
 *         return result
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """gets the number of constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_19getNConss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNConss, __pyx_t_2) < 0) __PYX_ERR(2, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":107
 *         return result
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_21getNVars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNVars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__114)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNVars, __pyx_t_2) < 0) __PYX_ERR(2, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":115
 *         return result
 * 
 *     def getID(self):             # <<<<<<<<<<<<<<
 *         """gets the unique id of the partialdecomposition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_23getID, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getID, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getID, __pyx_t_2) < 0) __PYX_ERR(2, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":123
 *         return result
 * 
 *     def getHashValue(self):             # <<<<<<<<<<<<<<
 *         """gets the calculated hash value of the partialdecomposition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_25getHashValue, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getHashValu, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getHashValue, __pyx_t_2) < 0) __PYX_ERR(2, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":131
 *         return result
 * 
 *     def getDetprobdata(self):             # <<<<<<<<<<<<<<
 *         """gets the corresponding detprobdata
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_27getDetprobdata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getDetprobd, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getDetprobdata, __pyx_t_2) < 0) __PYX_ERR(2, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":139
 *         return DetProbData.create(result)
 * 
 *     def fixConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """fixes a Constraint to the master constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_29fixConsToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConsToMa, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConsToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":147
 *         self.thisptr.fixConsToMaster(cons.scip_cons)
 * 
 *     def fixConssToMaster(self, conss):             # <<<<<<<<<<<<<<
 *         """fixes all constraints to the master constraints.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_31fixConssToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConssToM, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__121)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConssToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":160
 *             self.fixConsToMaster(<Constraint?>cons)
 * 
 *     def fixConsToBlockId(self, Constraint cons, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_33fixConsToBlockId, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConsToBl, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__123)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConsToBlockId, __pyx_t_2) < 0) __PYX_ERR(2, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":175
 *         self.thisptr.fixConsToBlock(cons.scip_cons, block_id)
 * 
 *     def fixConssToBlockId(self, conss, int block_id):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_35fixConssToBlockId, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConssToB, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__125)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConssToBlockId, __pyx_t_2) < 0) __PYX_ERR(2, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":207
 *     #        self.fixVarToBlockId(<Variable?>var, block_id)
 * 
 *     def fixConsToBlock(self, Constraint cons, object block):             # <<<<<<<<<<<<<<
 *         """Adds a constraint to a block.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_37fixConsToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConsToBl_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConsToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":234
 *         return block_id
 * 
 *     def fixConssToBlock(self, conss, object block):             # <<<<<<<<<<<<<<
 *         """Adds all constraints to a block.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_39fixConssToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixConssToB_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixConssToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":251
 *         return block_id
 * 
 *     def hasSetppccardMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing, set cover or cardinality constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_41hasSetppccardMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_hasSetppcca, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__130)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_hasSetppccardMaster, __pyx_t_2) < 0) __PYX_ERR(2, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":259
 *         return result
 * 
 *     def hasSetppcMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning, set packing or set cover constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_43hasSetppcMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_hasSetppcMa, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_hasSetppcMaster, __pyx_t_2) < 0) __PYX_ERR(2, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":267
 *         return result
 * 
 *     def hasSetppMaster(self):             # <<<<<<<<<<<<<<
 *         """checks if all master constraints set partitioning or set packing constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_45hasSetppMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_hasSetppMas, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_hasSetppMaster, __pyx_t_2) < 0) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":275
 *         return result
 * 
 *     def getNOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of constraints that are opened (not assigned yet)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_47getNOpenconss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNOpencon, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNOpenconss, __pyx_t_2) < 0) __PYX_ERR(2, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":283
 *         return result
 * 
 *     def getOpenconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are opened (not assigned yet)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_49getOpenconss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getOpencons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getOpenconss, __pyx_t_2) < 0) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":292
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of linking variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_51getNLinkingvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNLinking, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNLinkingvars, __pyx_t_2) < 0) __PYX_ERR(2, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":300
 *         return result
 * 
 *     def getLinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to linking variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_53getLinkingvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getLinkingv, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__138)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getLinkingvars, __pyx_t_2) < 0) __PYX_ERR(2, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":309
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets number of master constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_55getNMasterconss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNMasterc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__139)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNMasterconss, __pyx_t_2) < 0) __PYX_ERR(2, 309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":317
 *         return result
 * 
 *     def getMasterconss(self):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to master variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_57getMasterconss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getMasterco, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getMasterconss, __pyx_t_2) < 0) __PYX_ERR(2, 317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":326
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getNMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets number of master variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_59getNMastervars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNMasterv, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNMastervars, __pyx_t_2) < 0) __PYX_ERR(2, 326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":334
 *         return result
 * 
 *     def getMastervars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to master variables (static variables)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_61getMastervars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getMasterva, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getMastervars, __pyx_t_2) < 0) __PYX_ERR(2, 334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":343
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are opened (not assigned yet)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_63getNOpenvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNOpenvar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNOpenvars, __pyx_t_2) < 0) __PYX_ERR(2, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":351
 *         return result
 * 
 *     def getOpenvars(self):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are opened (not assigned yet)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_65getOpenvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getOpenvars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getOpenvars, __pyx_t_2) < 0) __PYX_ERR(2, 351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":360
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getNStairlinkingvars(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to stairlinking variables of the specified block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_67getNStairlinkingvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNStairli, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNStairlinkingvars, __pyx_t_2) < 0) __PYX_ERR(2, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":383
 *     #    return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def getConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of constraints that are assigned to the specified block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_69getConssForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getConssFor, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getConssForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 383, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":393
 *         return [Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in result]
 * 
 *     def getConssForBlocks(self):             # <<<<<<<<<<<<<<
 *         cdef vector[vector[int]] result = self.thisptr.getConssForBlocks()
 *         cdef DETPROBDATA* det_prob_data = self.thisptr.getDetprobdata()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_71getConssForBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getConssFor_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getConssForBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 393, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":398
 *         return [[Constraint.create(det_prob_data.getCons(consIndex)) for consIndex in block] for block in result]
 * 
 *     def getNVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of variables that are assigned to the specified block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_73getNVarsForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNVarsFor, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNVarsForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":407
 *         return result
 * 
 *     def getVarsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets a list of variables that are assigned to the specified block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_75getVarsForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getVarsForB, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getVarsForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":417
 *         return [Variable.create(det_prob_data.getVar(varIndex)) for varIndex in result]
 * 
 *     def setConsToMaster(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """adds constraint to the master constraints, does not delete this constraint from list of open constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_77setConsToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setConsToMa, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setConsToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":426
 *         self.thisptr.setConsToMaster(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def setVarToBlockId(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_79setVarToBlockId, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setVarToBlo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setVarToBlockId, __pyx_t_2) < 0) __PYX_ERR(2, 426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":438
 *         self.thisptr.setVarToBlock(det_prob_data.getIndexForVar(var.scip_var), cpp_block_id)
 * 
 *     def setVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_81setVarToLinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setVarToLin, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setVarToLinking, __pyx_t_2) < 0) __PYX_ERR(2, 438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":447
 *         self.thisptr.setVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToLinking(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the linking variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_83fixVarToLinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixVarToLin, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixVarToLinking, __pyx_t_2) < 0) __PYX_ERR(2, 447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":456
 *         self.thisptr.fixVarToLinking(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_85setVarToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setVarToMas, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setVarToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":467
 *         self.thisptr.setVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def fixVarToMaster(self, Variable var):             # <<<<<<<<<<<<<<
 *         """adds variable to the master variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_87fixVarToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixVarToMas, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixVarToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 467, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":478
 *         self.thisptr.fixVarToMaster(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setVarToStairlinking(self, Variable var, int block1_id, int block2_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables, does not delete this variable from list of open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_89setVarToStairlinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setVarToSta, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setVarToStairlinking, __pyx_t_2) < 0) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":494
 *         self.thisptr.setVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_block1_id, cpp_block2_id)
 * 
 *     def fixVarToStairlinking(self, Variable var, int firstblock_id):             # <<<<<<<<<<<<<<
 *         """adds variable to the stairlinking variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_91fixVarToStairlinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_fixVarToSta, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_fixVarToStairlinking, __pyx_t_2) < 0) __PYX_ERR(2, 494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":507
 *         self.thisptr.fixVarToStairlinking(det_prob_data.getIndexForVar(var.scip_var), cpp_firstblock_id)
 * 
 *     def isConsMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is a master constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_93isConsMastercons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isConsMaste, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isConsMastercons, __pyx_t_2) < 0) __PYX_ERR(2, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":518
 *         return result
 * 
 *     def isConsOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """gets whether the constraint is an open constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_95isConsOpencons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isConsOpenc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isConsOpencons, __pyx_t_2) < 0) __PYX_ERR(2, 518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":529
 *         return result
 * 
 *     def isVarBlockvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is assigned to the block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_97isVarBlockvarOfBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarBlockv, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarBlockvarOfBlock, __pyx_t_2) < 0) __PYX_ERR(2, 529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":541
 *         return result
 * 
 *     def isVarLinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a linking variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_99isVarLinkingvar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarLinkin, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarLinkingvar, __pyx_t_2) < 0) __PYX_ERR(2, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":552
 *         return result
 * 
 *     def isVarMastervar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a master variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_101isVarMastervar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarMaster, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarMastervar, __pyx_t_2) < 0) __PYX_ERR(2, 552, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":563
 *         return result
 * 
 *     def isVarOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is an open variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_103isVarOpenvar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarOpenva, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarOpenvar, __pyx_t_2) < 0) __PYX_ERR(2, 563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":574
 *         return result
 * 
 *     def isVarStairlinkingvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """gets whether the variable is a stairlinking variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_105isVarStairlinkingvar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarStairl, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarStairlinkingvar, __pyx_t_2) < 0) __PYX_ERR(2, 574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":585
 *         return result
 * 
 *     def isVarStairlinkingvarOfBlock(self, Variable var, int block_id):             # <<<<<<<<<<<<<<
 *         """checks whether the var is a stairlinkingvar of a specified block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_107isVarStairlinkingvarOfBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isVarStairl_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isVarStairlinkingvarOfBlock, __pyx_t_2) < 0) __PYX_ERR(2, 585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":597
 *         return result
 * 
 *     def deleteOpencons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """deletes constraint from list of open constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_109deleteOpencons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_deleteOpenc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_deleteOpencons, __pyx_t_2) < 0) __PYX_ERR(2, 597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":606
 *         self.thisptr.deleteOpencons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def deleteOpenvar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """deletes variable from the list of open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_111deleteOpenvar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_deleteOpenv, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_deleteOpenvar, __pyx_t_2) < 0) __PYX_ERR(2, 606, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":615
 *         self.thisptr.deleteOpenvar(det_prob_data.getIndexForVar(var.scip_var))
 * 
 *     def setUsergiven(self, USERGIVEN value=COMPLETED_CONSTOMASTER):             # <<<<<<<<<<<<<<
 *         self.thisptr.setUsergiven(value)
 * 
 */
  __pyx_k__5 = gcg::COMPLETED_CONSTOMASTER;
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::COMPLETED_CONSTOMASTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(2, 615, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_113setUsergiven, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setUsergive, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setUsergiven, __pyx_t_2) < 0) __PYX_ERR(2, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":618
 *         self.thisptr.setUsergiven(value)
 * 
 *     def getUsergiven(self):             # <<<<<<<<<<<<<<
 *         """gets the PY_USERGIVEN status of this partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_115getUsergiven, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getUsergive, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getUsergiven, __pyx_t_2) < 0) __PYX_ERR(2, 618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":668
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion("strong decomposition score")))
 * 
 *     def addClockTime(self, double clocktime):             # <<<<<<<<<<<<<<
 *         """adds detection time of one detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_117addClockTime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addClockTim, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addClockTime, __pyx_t_2) < 0) __PYX_ERR(2, 668, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":676
 *         self.thisptr.addClockTime(cpp_clocktime)
 * 
 *     def addPctConssFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed constraints
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_119addPctConssFromFree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctConssFromFree, __pyx_t_2) < 0) __PYX_ERR(2, 676, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":684
 *         self.thisptr.addPctConssFromFree(cpp_pct)
 * 
 *     def addPctConssToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to blocks
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_121addPctConssToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctConss_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctConssToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 684, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":692
 *         self.thisptr.addPctConssToBlock(cpp_pct)
 * 
 *     def addPctConssToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of constraints assigned to border
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_123addPctConssToBorder, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctConss_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctConssToBorder, __pyx_t_2) < 0) __PYX_ERR(2, 692, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":700
 *         self.thisptr.addPctConssToBorder(cpp_pct)
 * 
 *     def addPctVarsFromFree(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of closed variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_125addPctVarsFromFree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctVarsF, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctVarsFromFree, __pyx_t_2) < 0) __PYX_ERR(2, 700, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":708
 *         self.thisptr.addPctVarsFromFree(cpp_pct)
 * 
 *     def addPctVarsToBlock(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to blocks
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_127addPctVarsToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctVarsT, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctVarsToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 708, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":716
 *         self.thisptr.addPctVarsToBlock(cpp_pct)
 * 
 *     def addPctVarsToBorder(self, double pct):             # <<<<<<<<<<<<<<
 *         """adds percentage of variables assigned to border
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_129addPctVarsToBorder, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addPctVarsT_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__191)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addPctVarsToBorder, __pyx_t_2) < 0) __PYX_ERR(2, 716, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":724
 *         self.thisptr.addPctVarsToBorder(cpp_pct)
 * 
 *     def getPctVarsToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_131getPctVarsToBorder, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsT, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsToBorder, __pyx_t_2) < 0) __PYX_ERR(2, 724, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":733
 *         return result
 * 
 *     def getPctVarsToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to the border for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_133getPctVarsToBorderVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsT_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__194)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsToBorderVector, __pyx_t_2) < 0) __PYX_ERR(2, 733, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":741
 *         return result
 * 
 *     def getPctVarsToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables assigned to a block for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_135getPctVarsToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsT_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":750
 *         return result
 * 
 *     def getPctVarsToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """returns fraction of variables assigned to a block for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_137getPctVarsToBlockVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsT_4, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsToBlockVector, __pyx_t_2) < 0) __PYX_ERR(2, 750, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":758
 *         return result
 * 
 *     def getPctVarsFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """Gets fraction of variables that are not longer open for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_139getPctVarsFromFree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsF, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsFromFree, __pyx_t_2) < 0) __PYX_ERR(2, 758, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":767
 *         return result
 * 
 *     def getPctVarsFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of variables that are not longer open for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_141getPctVarsFromFreeVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctVarsF_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctVarsFromFreeVector, __pyx_t_2) < 0) __PYX_ERR(2, 767, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":775
 *         return result
 * 
 *     def getPctConssToBorder(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_143getPctConssToBorder, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssToBorder, __pyx_t_2) < 0) __PYX_ERR(2, 775, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":784
 *         return result
 * 
 *     def getPctConssToBorderVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to the border for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_145getPctConssToBorderVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__200)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssToBorderVector, __pyx_t_2) < 0) __PYX_ERR(2, 784, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":792
 *         return result
 * 
 *     def getPctConssToBlock(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_147getPctConssToBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssToBlock, __pyx_t_2) < 0) __PYX_ERR(2, 792, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":801
 *         return result
 * 
 *     def getPctConssToBlockVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints assigned to a block for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_149getPctConssToBlockVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss_4, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssToBlockVector, __pyx_t_2) < 0) __PYX_ERR(2, 801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":809
 *         return result
 * 
 *     def getPctConssFromFree(self, int detectorchainindex):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_151getPctConssFromFree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss_5, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__203)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssFromFree, __pyx_t_2) < 0) __PYX_ERR(2, 809, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":818
 *         return result
 * 
 *     def getPctConssFromFreeVector(self):             # <<<<<<<<<<<<<<
 *         """gets fraction of constraints that are not longer open for detectors in detectorchain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_153getPctConssFromFreeVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getPctConss_6, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getPctConssFromFreeVector, __pyx_t_2) < 0) __PYX_ERR(2, 818, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":826
 *         return result
 * 
 *     def getScore(self, Score score):             # <<<<<<<<<<<<<<
 *         """gets value of the score
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_155getScore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getScore, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getScore, __pyx_t_2) < 0) __PYX_ERR(2, 826, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":834
 *         return self.thisptr.getScore(GCGfindScore(self.thisptr.getDetprobdata().getScip(), str_conversion(score.scorename)))
 * 
 *     def calcStairlinkingVars(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to stairlinkingvars if possible
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_157calcStairlinkingVars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_calcStairli, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_calcStairlinkingVars, __pyx_t_2) < 0) __PYX_ERR(2, 834, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":844
 *         self.thisptr.calcStairlinkingVars()
 * 
 *     def checkAllConssAssigned(self):             # <<<<<<<<<<<<<<
 *         """checks if all constraints are assigned and deletes the open constraint vector if so
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_159checkAllConssAssigned, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_checkAllCon, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_checkAllConssAssigned, __pyx_t_2) < 0) __PYX_ERR(2, 844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":852
 *         return result
 * 
 *     def checkConsistency(self):             # <<<<<<<<<<<<<<
 *         """checks whether the assignments in the partialdec are consistent
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_161checkConsistency, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_checkConsis, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_checkConsistency, __pyx_t_2) < 0) __PYX_ERR(2, 852, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":872
 *         return result
 * 
 *     def complete(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables trivially
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_163complete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_complete, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_complete, __pyx_t_2) < 0) __PYX_ERR(2, 872, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":881
 *         self.thisptr.complete()
 * 
 *     def sort(self):             # <<<<<<<<<<<<<<
 *         """sorts the variables and constraints data structures by their indices
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_165sort, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_sort, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__211)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_sort, __pyx_t_2) < 0) __PYX_ERR(2, 881, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":889
 *         return result
 * 
 *     def completeByConnected(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_167completeByConnected, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_completeByC, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_completeByConnected, __pyx_t_2) < 0) __PYX_ERR(2, 889, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":897
 *         self.thisptr.completeByConnected()
 * 
 *     def completeByConnectedConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_169completeByConnectedConssAdjacency, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_completeByC_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_completeByConnectedConssAdjacenc, __pyx_t_2) < 0) __PYX_ERR(2, 897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":907
 *         self.thisptr.completeByConnectedConssAdjacency()
 * 
 *     def completeGreedily(self):             # <<<<<<<<<<<<<<
 *         """assigns all open constraints and open variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_171completeGreedily, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_completeGre, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_completeGreedily, __pyx_t_2) < 0) __PYX_ERR(2, 907, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":916
 *         self.thisptr.completeGreedily()
 * 
 *     def prepare(self):             # <<<<<<<<<<<<<<
 *         """sorts the partialdec and calculates a its implicit assignments, hashvalue and evaluation
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_173prepare, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_prepare, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_prepare, __pyx_t_2) < 0) __PYX_ERR(2, 916, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":922
 *         self.thisptr.prepare()
 * 
 *     def getNDetectors(self):             # <<<<<<<<<<<<<<
 *         """gets the number of detectors the partialdec is propagated by
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_175getNDetectors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNDetecto, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNDetectors, __pyx_t_2) < 0) __PYX_ERR(2, 922, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":930
 *         return result
 * 
 *     def getNReps(self):             # <<<<<<<<<<<<<<
 *         """gets the number of blockrepresentatives
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_177getNReps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNReps, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNReps, __pyx_t_2) < 0) __PYX_ERR(2, 930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":938
 *         return result
 * 
 *     def getNCoeffsForMaster(self):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coefficients in master
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_179getNCoeffsForMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNCoeffsF, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__218)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNCoeffsForMaster, __pyx_t_2) < 0) __PYX_ERR(2, 938, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":946
 *         return result
 * 
 *     def setNBlocks(self, int nblocks):             # <<<<<<<<<<<<<<
 *         """sets number of blocks, only increasing number allowed
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_181setNBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setNBlocks, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__220)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setNBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":954
 *         self.thisptr.setNBlocks(cpp_nblocks)
 * 
 *     def getNTotalStairlinkingvars(self):             # <<<<<<<<<<<<<<
 *         """gets total number of stairlinking variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_183getNTotalStairlinkingvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNTotalSt, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNTotalStairlinkingvars, __pyx_t_2) < 0) __PYX_ERR(2, 954, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":962
 *         return result
 * 
 *     def getNVarsForBlocks(self):             # <<<<<<<<<<<<<<
 *         """gets overall number of variables assigned to a block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_185getNVarsForBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNVarsFor_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNVarsForBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 962, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":970
 *         return result
 * 
 *     def findVarsLinkingToMaster(self):             # <<<<<<<<<<<<<<
 *         """reassigns linking variables to master if appropriate
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_187findVarsLinkingToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_findVarsLin, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_findVarsLinkingToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 970, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":977
 *         self.thisptr.findVarsLinkingToMaster()
 * 
 *     def findVarsLinkingToStairlinking(self):             # <<<<<<<<<<<<<<
 *         """reassigns variables classified as linking to stairlinking if appropriate
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_189findVarsLinkingToStairlinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_findVarsLin_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__224)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_findVarsLinkingToStairlinking, __pyx_t_2) < 0) __PYX_ERR(2, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":984
 *         self.thisptr.findVarsLinkingToStairlinking()
 * 
 *     def getNCoeffsForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets number of nonzero coeffs in a certain block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_191getNCoeffsForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNCoeffsF_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNCoeffsForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 984, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":994
 *         return result
 * 
 *     def addNNewBlocks(self, int nnewblocks):             # <<<<<<<<<<<<<<
 *         """adds how many new blocks were introduced
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_193addNNewBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addNNewBloc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addNNewBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 994, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1002
 *         self.thisptr.addNNewBlocks(cpp_nnewblocks)
 * 
 *     def getNConssForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets size of the vector containing constraints assigned to a block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_195getNConssForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNConssFo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNConssForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 1002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1012
 *         return result
 * 
 *     def removeMastercons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """removes the given constraint from master
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_197removeMastercons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_removeMaste, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_removeMastercons, __pyx_t_2) < 0) __PYX_ERR(2, 1012, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1021
 *         self.thisptr.removeMastercons(det_prob_data.getIndexForCons(cons.scip_cons))
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """gets whether the partialdec is from the presolved problem
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_199isAssignedToOrigProb, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_isAssignedT, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_isAssignedToOrigProb, __pyx_t_2) < 0) __PYX_ERR(2, 1021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1029
 *         return result
 * 
 *     def refineToBlocks(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on blocks
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_201refineToBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_refineToBlo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__232)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_refineToBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 1029, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1038
 *         self.thisptr.refineToBlocks()
 * 
 *     def refineToMaster(self):             # <<<<<<<<<<<<<<
 *         """refine partialdec with focus on master
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_203refineToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_refineToMas, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_refineToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 1038, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1046
 *         self.thisptr.refineToMaster()
 * 
 *     def alreadyAssignedConssToBlocks(self):             # <<<<<<<<<<<<<<
 *         """checks if at least one constraint is assigned to some block
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_205alreadyAssignedConssToBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_alreadyAssi, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__234)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_alreadyAssignedConssToBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 1046, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1054
 *         return result
 * 
 *     def assignCurrentStairlinking(self):             # <<<<<<<<<<<<<<
 *         """assigns open variables to stairlinking if appropriate
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_207assignCurrentStairlinking, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_assignCurre, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_assignCurrentStairlinking, __pyx_t_2) < 0) __PYX_ERR(2, 1054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1064
 *         return result
 * 
 *     def aggInfoCalculated(self):             # <<<<<<<<<<<<<<
 *         """checks if the aggregation information was already calculated
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_209aggInfoCalculated, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_aggInfoCalc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__236)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_aggInfoCalculated, __pyx_t_2) < 0) __PYX_ERR(2, 1064, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1072
 *         return result
 * 
 *     def considerImplicits(self):             # <<<<<<<<<<<<<<
 *         """assigns every open constraint/variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_211considerImplicits, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_considerImp, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_considerImplicits, __pyx_t_2) < 0) __PYX_ERR(2, 1072, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1084
 *         self.thisptr.considerImplicits()
 * 
 *     def displayInfo(self, int detailLevel):             # <<<<<<<<<<<<<<
 *         """displays the relevant information of the partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_213displayInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_displayInfo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_displayInfo, __pyx_t_2) < 0) __PYX_ERR(2, 1084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1095
 *         self.thisptr.displayInfo(cpp_detailLevel)
 * 
 *     def getAncestorList(self):             # <<<<<<<<<<<<<<
 *         """gets ancestor ids as vector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_215getAncestorList, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getAncestor, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getAncestorList, __pyx_t_2) < 0) __PYX_ERR(2, 1095, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1103
 *         return result
 * 
 *     def assignSmallestComponentsButOneConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """computes components by connectedness of constraints and variables
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_217assignSmallestComponentsButOneConssAdjacency, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_assignSmall, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_assignSmallestComponentsButOneCo, __pyx_t_2) < 0) __PYX_ERR(2, 1103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1117
 *         self.thisptr.assignSmallestComponentsButOneConssAdjacency()
 * 
 *     def deleteEmptyBlocks(self, bool variables):             # <<<<<<<<<<<<<<
 *         """deletes empty blocks and sets nblocks accordingly
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_219deleteEmptyBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_deleteEmpty, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_deleteEmptyBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 1117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1128
 *         self.thisptr.deleteEmptyBlocks(cpp_variables)
 * 
 *     def getTranslatedpartialdecid(self):             # <<<<<<<<<<<<<<
 *         cdef int result = self.thisptr.getTranslatedpartialdecid()
 *         return result
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_221getTranslatedpartialdecid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getTranslat, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getTranslatedpartialdecid, __pyx_t_2) < 0) __PYX_ERR(2, 1128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1132
 *         return result
 * 
 *     def setTranslatedpartialdecid(self, int dec_id):             # <<<<<<<<<<<<<<
 *         cdef int cpp_dec_id = dec_id
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_223setTranslatedpartialdecid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setTranslat, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setTranslatedpartialdecid, __pyx_t_2) < 0) __PYX_ERR(2, 1132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1136
 *         self.thisptr.setTranslatedpartialdecid(cpp_dec_id)
 * 
 *     def buildDecChainString(self, buffer):             # <<<<<<<<<<<<<<
 *         """creates a detector chain short string for this partialdec, is built from detector chain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_225buildDecChainString, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_buildDecCha, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_buildDecChainString, __pyx_t_2) < 0) __PYX_ERR(2, 1136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1143
 *         self.thisptr.buildDecChainString(c_buffer)
 * 
 *     def addDecChangesFromAncestor(self, PartialDecomposition ancestor):             # <<<<<<<<<<<<<<
 *         """adds the statistical differences to an ancestor
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_227addDecChangesFromAncestor, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addDecChang, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__250)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addDecChangesFromAncestor, __pyx_t_2) < 0) __PYX_ERR(2, 1143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1151
 *         self.thisptr.addDecChangesFromAncestor(cpp_ancestor)
 * 
 *     def addDetectorChainInfo(PartialDecomposition self, decinfo):             # <<<<<<<<<<<<<<
 *         """adds information about the detector chain
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_229addDetectorChainInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__252)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addDetectorChainInfo, __pyx_t_2) < 0) __PYX_ERR(2, 1151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1160
 *         self.thisptr.addDetectorChainInfo(c_decinfo)
 * 
 *     def getAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """gets partialdec id of given ancestor id
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_231getAncestorID, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getAncestor_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__254)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getAncestorID, __pyx_t_2) < 0) __PYX_ERR(2, 1160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1169
 *         return result
 * 
 *     def copyPartitionStatistics(PartialDecomposition self, PartialDecomposition otherpartialdec):             # <<<<<<<<<<<<<<
 *         """copies the given partialdec's partition statistics
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_233copyPartitionStatistics, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_copyPartiti, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_copyPartitionStatistics, __pyx_t_2) < 0) __PYX_ERR(2, 1169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1177
 *         self.thisptr.copyPartitionStatistics(cpp_otherpartialdec)
 * 
 *     def removeAncestorID(PartialDecomposition self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """removes ancestor id from list
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_235removeAncestorID, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_removeAnces, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_removeAncestorID, __pyx_t_2) < 0) __PYX_ERR(2, 1177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1183
 *         self.thisptr.removeAncestorID(cpp_ancestor_id)
 * 
 *     def addAncestorID(self, int ancestor_id):             # <<<<<<<<<<<<<<
 *         """adds ancestor id to back of list
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_237addAncestorID, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_addAncestor, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_addAncestorID, __pyx_t_2) < 0) __PYX_ERR(2, 1183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1191
 *         self.thisptr.addAncestorID(cpp_ancestor_id)
 * 
 *     def getBlocksForRep(PartialDecomposition self, int rep_id):             # <<<<<<<<<<<<<<
 *         """get a vector of block ids that are identical to block with id rep_id
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_239getBlocksForRep, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getBlocksFo, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__261)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getBlocksForRep, __pyx_t_2) < 0) __PYX_ERR(2, 1191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1201
 *         return result
 * 
 *     def getNNewBlocksVector(self):             # <<<<<<<<<<<<<<
 *         """gets number of blocks the detectors in the detectorchain added
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_241getNNewBlocksVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNNewBloc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__262)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNNewBlocksVector, __pyx_t_2) < 0) __PYX_ERR(2, 1201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1209
 *         return result
 * 
 *     def getNAncestors(self):             # <<<<<<<<<<<<<<
 *         """gets number of ancestor partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_243getNAncestors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNAncesto, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNAncestors, __pyx_t_2) < 0) __PYX_ERR(2, 1209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1217
 *         return result
 * 
 *     def getNNewBlocks(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """gets number of blocks a detector added
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_245getNNewBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getNNewBloc_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getNNewBlocks, __pyx_t_2) < 0) __PYX_ERR(2, 1217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1226
 *         return result
 * 
 *     def getFinishedByFinisher(self):             # <<<<<<<<<<<<<<
 *         """returns True iff this partialdec was finished by finishPartialdec() method of a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_247getFinishedByFinisher, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getFinished, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__266)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getFinishedByFinisher, __pyx_t_2) < 0) __PYX_ERR(2, 1226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1234
 *         return result
 * 
 *     def getDetectorchainInfo(self):             # <<<<<<<<<<<<<<
 *         """gets the detectorchain info vector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_249getDetectorchainInfo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getDetectorchainInfo, __pyx_t_2) < 0) __PYX_ERR(2, 1234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1242
 *         return result
 * 
 *     def shouldCompletedByConsToMaster(self):             # <<<<<<<<<<<<<<
 *         """checks whether this partialdec is a userpartialdec that should be completed
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_251shouldCompletedByConsToMaster, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_shouldCompl, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__268)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_shouldCompletedByConsToMaster, __pyx_t_2) < 0) __PYX_ERR(2, 1242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1251
 *         return result
 * 
 *     def setFinishedByFinisher(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_253setFinishedByFinisher, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setFinished, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__270)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setFinishedByFinisher, __pyx_t_2) < 0) __PYX_ERR(2, 1251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1259
 *         self.thisptr.setFinishedByFinisher(cpp_finished)
 * 
 *     def calcAggregationInformation(self, bool ignoreDetectionLimits):             # <<<<<<<<<<<<<<
 *         """computes if aggregation of sub problems is possible
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_255calcAggregationInformation, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_calcAggrega, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__272)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_calcAggregationInformation, __pyx_t_2) < 0) __PYX_ERR(2, 1259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1271
 *         self.thisptr.calcAggregationInformation(cpp_ignoreDetectionLimits)
 * 
 *     def setDetectorPropagated(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets partialdec to be propagated by a detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_257setDetectorPropagated, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setDetectorPropagated, __pyx_t_2) < 0) __PYX_ERR(2, 1271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1279
 *         self.thisptr.setDetectorPropagated(dec)
 * 
 *     def setDetectorFinished(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_259setDetectorFinished, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setDetector_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__275)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setDetectorFinished, __pyx_t_2) < 0) __PYX_ERR(2, 1279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1287
 *         self.thisptr.setDetectorFinished(dec)
 * 
 *     def setDetectorFinishedOrig(self, Detector detector):             # <<<<<<<<<<<<<<
 *         """sets detector that finished the partialdec in the original problem
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_261setDetectorFinishedOrig, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setDetector_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setDetectorFinishedOrig, __pyx_t_2) < 0) __PYX_ERR(2, 1287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1296
 *         self.thisptr.setDetectorFinishedOrig(dec)
 * 
 *     def setPctConssToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints set to blocks per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_263setPctConssToBlockVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__278)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctConssToBlockVector, __pyx_t_2) < 0) __PYX_ERR(2, 1296, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1304
 *         self.thisptr.setPctConssToBlockVector(cpp_newvector)
 * 
 *     def setPctConssFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints that are not longer open per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_265setPctConssFromFreeVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctConss_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctConssFromFreeVector, __pyx_t_2) < 0) __PYX_ERR(2, 1304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1312
 *         self.thisptr.setPctConssFromFreeVector(cpp_newvector)
 * 
 *     def setPctConssToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of constraints assigned to the border per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_267setPctConssToBorderVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctConss_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__280)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctConssToBorderVector, __pyx_t_2) < 0) __PYX_ERR(2, 1312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1320
 *         self.thisptr.setPctConssToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBorderVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fraction of variables assigned to the border per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_269setPctVarsToBorderVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctVarsT, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__281)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctVarsToBorderVector, __pyx_t_2) < 0) __PYX_ERR(2, 1320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1328
 *         self.thisptr.setPctVarsToBorderVector(cpp_newvector)
 * 
 *     def setPctVarsToBlockVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of fractions of variables assigned to a block per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_271setPctVarsToBlockVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctVarsT_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__282)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctVarsToBlockVector, __pyx_t_2) < 0) __PYX_ERR(2, 1328, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1336
 *         self.thisptr.setPctVarsToBlockVector(cpp_newvector)
 * 
 *     def setPctVarsFromFreeVector(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of variables that are not longer open per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_273setPctVarsFromFreeVector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setPctVarsF, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setPctVarsFromFreeVector, __pyx_t_2) < 0) __PYX_ERR(2, 1336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1344
 *         self.thisptr.setPctVarsFromFreeVector(cpp_newvector)
 * 
 *     def setDetectorClockTimes(self, object newvector):             # <<<<<<<<<<<<<<
 *         """set statistical vector of the times that the detectors needed for detecting per involved detector
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_275setDetectorClockTimes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setDetector_4, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__284)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setDetectorClockTimes, __pyx_t_2) < 0) __PYX_ERR(2, 1344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1352
 *         self.thisptr.setDetectorClockTimes(cpp_newvector)
 * 
 *     def setFinishedByFinisherOrig(self, bool finished):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec was finished by a finishing detector in the original problem (in case this partialdec was translated)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_277setFinishedByFinisherOrig, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setFinished_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setFinishedByFinisherOrig, __pyx_t_2) < 0) __PYX_ERR(2, 1352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1360
 *         self.thisptr.setFinishedByFinisherOrig(cpp_finished)
 * 
 *     def setStemsFromOrig(self, bool fromorig):             # <<<<<<<<<<<<<<
 *         """sets whether this partialdec stems from an orig problem partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_279setStemsFromOrig, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setStemsFro, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setStemsFromOrig, __pyx_t_2) < 0) __PYX_ERR(2, 1360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1368
 *         self.thisptr.setStemsFromOrig(cpp_fromorig)
 * 
 *     def getDetectorClockTime(self, int detectorchain_id):             # <<<<<<<<<<<<<<
 *         """returns the time that the detector related to the given detectorchainindex needed for detecting
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_281getDetectorClockTime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getDetector_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__288)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getDetectorClockTime, __pyx_t_2) < 0) __PYX_ERR(2, 1368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1377
 *         return result
 * 
 *     def getRepForBlock(self, int block_id):             # <<<<<<<<<<<<<<
 *         """gets index of the representative block for a block, this might be block_id itself
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_283getRepForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getRepForBl, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getRepForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 1377, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1387
 *         return result
 * 
 *     def showVisualization(self):             # <<<<<<<<<<<<<<
 *         """generates and opens a gp visualization of the partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_285showVisualization, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_showVisuali, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__290)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_showVisualization, __pyx_t_2) < 0) __PYX_ERR(2, 1387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1394
 *         self.thisptr.showVisualization()
 * 
 *     def _repr_svg_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("svg")
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_287_repr_svg_, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition__repr_svg, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_repr_svg, __pyx_t_2) < 0) __PYX_ERR(2, 1394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1397
 *         return self.__generate_visualization("svg")
 * 
 *     def _repr_png_(self):             # <<<<<<<<<<<<<<
 *         return self.__generate_visualization("png")
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_289_repr_png_, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition__repr_png, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_repr_png, __pyx_t_2) < 0) __PYX_ERR(2, 1397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1450
 * 
 *     # BEGIN AUTOGENERATED BLOCK
 *     def setAncestorList(PartialDecomposition self, object newlist):             # <<<<<<<<<<<<<<
 *         """set ancestor list directly
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_293setAncestorList, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setAncestor, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__294)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setAncestorList, __pyx_t_2) < 0) __PYX_ERR(2, 1450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1458
 *         self.thisptr.setAncestorList(cpp_newlist)
 * 
 *     def getDetectorClockTimes(PartialDecomposition self):             # <<<<<<<<<<<<<<
 *         """returns a vector of the clock times that each detector needed that was involved in this partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_295getDetectorClockTimes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getDetector_3, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getDetectorClockTimes, __pyx_t_2) < 0) __PYX_ERR(2, 1458, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1474
 *     #     return result
 * 
 *     def getRepVarmap(PartialDecomposition self, int repid, int blockrepid):             # <<<<<<<<<<<<<<
 *         """Gets the represenation varmap
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_297getRepVarmap, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getRepVarma, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getRepVarmap, __pyx_t_2) < 0) __PYX_ERR(2, 1474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1488
 *         return result
 * 
 *     def getVarProbindexForBlock(PartialDecomposition self, int varid, int block):             # <<<<<<<<<<<<<<
 *         """Gets index in variables array of a block for a variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_299getVarProbindexForBlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_getVarProbi, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_getVarProbindexForBlock, __pyx_t_2) < 0) __PYX_ERR(2, 1488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1517
 *     #     raise NotImplementedError()
 * 
 *     def setConsPartitionStatistics(PartialDecomposition self, int detectorchainindex, ConsPart partition, object consclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used conspartition.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_301setConsPartitionStatistics, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setConsPart, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__301)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setConsPartitionStatistics, __pyx_t_2) < 0) __PYX_ERR(2, 1517, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "src/pygcgopt/decomposition.pxi":1533
 *     #     self.thisptr.setDetectorchain(cpp_givenDetectorChain)
 * 
 *     def setVarPartitionStatistics(PartialDecomposition self, int detectorchainindex, VarPart partition, object varclasseslinking, object varclassesmaster):             # <<<<<<<<<<<<<<
 *         """registers statistics for a used varpartition.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_303setVarPartitionStatistics, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition_setVarParti, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition, __pyx_n_s_setVarPartitionStatistics, __pyx_t_2) < 0) __PYX_ERR(2, 1533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PartialDecomposition);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_305__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition___reduce_cy, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__304)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PartialDecomposition_307__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PartialDecomposition___setstate, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__305)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/detprobdata.pxi":12
 *         return new_DetProbData
 * 
 *     def createConsPart(self, name, nclasses, ncons):             # <<<<<<<<<<<<<<
 *         """returns a ConsPart object
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_1createConsPart, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_createConsPart, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_createConsPart, __pyx_t_2) < 0) __PYX_ERR(9, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":29
 *         return ConsPart.create(conspatitionptr, self)
 * 
 *     def createVarPart(self, name, nclasses, nvars):             # <<<<<<<<<<<<<<
 *         """returns a VarPart object
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_3createVarPart, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_createVarPart, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_createVarPart, __pyx_t_2) < 0) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":46
 *         return VarPart.create(varpatitionptr, self)
 * 
 *     def candidatesNBlocks(self):             # <<<<<<<<<<<<<<
 *         """candidate for the number of blocks, second int indicates how often a candidate was added
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_5candidatesNBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_candidatesNBlocks, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__310)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_candidatesNBlocks, __pyx_t_2) < 0) __PYX_ERR(9, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":52
 *         return result
 * 
 *     def candidatesNBlocks(self, object candidatesNBlocks):             # <<<<<<<<<<<<<<
 *         cdef vector[pair[int, int]] cpp_candidatesNBlocks = candidatesNBlocks
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_7candidatesNBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_candidatesNBlocks, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__312)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_candidatesNBlocks, __pyx_t_2) < 0) __PYX_ERR(9, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":56
 *         self.thisptr.candidatesNBlocks = cpp_candidatesNBlocks
 * 
 *     def conspartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different constraint class distributions.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_9conspartitioncollection, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_conspartitioncollect, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__314)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_conspartitioncollection, __pyx_t_2) < 0) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":62
 *         return [ConsPart.create(r, <DetProbData>weakref.proxy(self)) for r in result]
 * 
 *     def conspartitioncollection(self, object conspartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_11conspartitioncollection, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_conspartitioncollect, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__316)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_conspartitioncollection, __pyx_t_2) < 0) __PYX_ERR(9, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":73
 *         self.thisptr.conspartitioncollection = cpp_conspartitioncollection
 * 
 *     def varpartitioncollection(self):             # <<<<<<<<<<<<<<
 *         """collection of different variable class distributions.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_13varpartitioncollection, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_varpartitioncollecti, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_varpartitioncollection, __pyx_t_2) < 0) __PYX_ERR(9, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":79
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def varpartitioncollection(self, object varpartitioncollection):             # <<<<<<<<<<<<<<
 *         # this seems to be possible only when we use C++11 (-std=c++11)
 *         # maybe it will be fixed in a future version of Cython
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_15varpartitioncollection, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_varpartitioncollecti, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_varpartitioncollection, __pyx_t_2) < 0) __PYX_ERR(9, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":90
 *         self.thisptr.varpartitioncollection = cpp_varpartitioncollection
 * 
 *     def classificationtime(self):             # <<<<<<<<<<<<<<
 *         """time that was consumed by the classification of the constraint and variables classifiers.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_17classificationtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_classificationtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__320)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_classificationtime, __pyx_t_2) < 0) __PYX_ERR(9, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":96
 *         return result
 * 
 *     def classificationtime(self, double classificationtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_classificationtime = classificationtime
 *         self.thisptr.classificationtime = cpp_classificationtime
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_19classificationtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_classificationtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__322)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_classificationtime, __pyx_t_2) < 0) __PYX_ERR(9, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":100
 *         self.thisptr.classificationtime = cpp_classificationtime
 * 
 *     def nblockscandidatescalctime(self):             # <<<<<<<<<<<<<<
 *         """time that was used to calulate the candidates of te block number.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_21nblockscandidatescalctime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_nblockscandidatescal, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_nblockscandidatescalctime, __pyx_t_2) < 0) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":106
 *         return result
 * 
 *     def nblockscandidatescalctime(DetProbData self, double nblockscandidatescalctime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_nblockscandidatescalctime = nblockscandidatescalctime
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_23nblockscandidatescalctime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_nblockscandidatescal, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_nblockscandidatescalctime, __pyx_t_2) < 0) __PYX_ERR(9, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":110
 *         self.thisptr.nblockscandidatescalctime = cpp_nblockscandidatescalctime
 * 
 *     def postprocessingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent in postproceesing decomposigtions.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_25postprocessingtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_postprocessingtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__326)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_postprocessingtime, __pyx_t_2) < 0) __PYX_ERR(9, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":116
 *         return result
 * 
 *     def postprocessingtime(self, double postprocessingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_postprocessingtime = postprocessingtime
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_27postprocessingtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_postprocessingtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__328)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_postprocessingtime, __pyx_t_2) < 0) __PYX_ERR(9, 116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":120
 *         self.thisptr.postprocessingtime = cpp_postprocessingtime
 * 
 *     def translatingtime(self):             # <<<<<<<<<<<<<<
 *         """time that was spent by transforming partialdecs between presolved and orig problem.
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_29translatingtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_translatingtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_translatingtime, __pyx_t_2) < 0) __PYX_ERR(9, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":126
 *         return result
 * 
 *     def translatingtime(self, double translatingtime):             # <<<<<<<<<<<<<<
 *         cdef double cpp_translatingtime = translatingtime
 *         self.thisptr.translatingtime = cpp_translatingtime
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_31translatingtime, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_translatingtime, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_translatingtime, __pyx_t_2) < 0) __PYX_ERR(9, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":130
 *         self.thisptr.translatingtime = cpp_translatingtime
 * 
 *     def addConsPartition(self, ConsPart partition):             # <<<<<<<<<<<<<<
 *         """adds a constraint partition if it is no duplicate of an existing constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_33addConsPartition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addConsPartition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__333)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addConsPartition, __pyx_t_2) < 0) __PYX_ERR(9, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":139
 *         self.thisptr.addConsPartition(cpp_partition)
 * 
 *     def addCandidatesNBlocksNVotes(self, int candidate, int nvotes):             # <<<<<<<<<<<<<<
 *         """adds a candidate for block number and counts how often a candidate is added
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_35addCandidatesNBlocksNVotes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addCandidatesNBlocks, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__335)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addCandidatesNBlocksNVotes, __pyx_t_2) < 0) __PYX_ERR(9, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":149
 *         self.thisptr.addCandidatesNBlocksNVotes(candidate, nvotes)
 * 
 *     def addPartialdecToAncestor(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to ancestor partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_37addPartialdecToAncestor, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addPartialdecToAnces, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addPartialdecToAncestor, __pyx_t_2) < 0) __PYX_ERR(9, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":158
 *         self.thisptr.addPartialdecToAncestor(cpp_partialdec)
 * 
 *     def addPartialdecToOpen(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to current partialdecs (data structure for partialdecs that are going to processed in the propagation rounds)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_39addPartialdecToOpen, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addPartialdecToOpen, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__338)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addPartialdecToOpen, __pyx_t_2) < 0) __PYX_ERR(9, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":169
 *         return self.thisptr.addPartialdecToOpen(cpp_partialdec)
 * 
 *     def addPartialdecToFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_41addPartialdecToFinished, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addPartialdecToFinis, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addPartialdecToFinished, __pyx_t_2) < 0) __PYX_ERR(9, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":182
 *         return self.thisptr.addPartialdecToFinished(cpp_partialdec)
 * 
 *     def addPartialdecToFinishedUnchecked(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """adds a partialdec to finished partialdecs without checking for duplicates, dev has to check this on his own
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_43addPartialdecToFinishedUnchecked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addPartialdecToFinis_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__340)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addPartialdecToFinishedUnchecked, __pyx_t_2) < 0) __PYX_ERR(9, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":193
 *         self.thisptr.addPartialdecToFinishedUnchecked(cpp_partialdec)
 * 
 *     def addVarPartition(self, VarPart partition):             # <<<<<<<<<<<<<<
 *         """adds a variable partition if it is no duplicate of an existing variable partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_45addVarPartition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_addVarPartition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_addVarPartition, __pyx_t_2) < 0) __PYX_ERR(9, 193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":202
 *         self.thisptr.addVarPartition(cpp_partition)
 * 
 *     def clearAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears ancestor partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_47clearAncestorPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_clearAncestorPartial, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__342)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_clearAncestorPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":209
 *         self.thisptr.clearAncestorPartialdecs()
 * 
 *     def clearCurrentPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears current partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_49clearCurrentPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_clearCurrentPartiald, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_clearCurrentPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":216
 *         self.thisptr.clearCurrentPartialdecs()
 * 
 *     def clearFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """clears finished partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_51clearFinishedPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_clearFinishedPartial, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__344)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_clearFinishedPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":223
 *         self.thisptr.clearFinishedPartialdecs()
 * 
 *     def createConssAdjacency(self):             # <<<<<<<<<<<<<<
 *         """creates the constraint adjacency datastructure that is used (if created) for some methods to faster access the constarints that have variables in common
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_53createConssAdjacency, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_createConssAdjacency, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_createConssAdjacency, __pyx_t_2) < 0) __PYX_ERR(9, 223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":228
 *         self.thisptr.createConssAdjacency()
 * 
 *     def freeTemporaryData(self):             # <<<<<<<<<<<<<<
 *         """frees temporary data that is only needed during the detection process
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_55freeTemporaryData, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_freeTemporaryData, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__346)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_freeTemporaryData, __pyx_t_2) < 0) __PYX_ERR(9, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":233
 *         self.thisptr.freeTemporaryData()
 * 
 *     def getAncestorPartialdec(self, partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from ancestor partialdec data structure with given index
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_57getAncestorPartialdec, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getAncestorPartialde, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getAncestorPartialdec, __pyx_t_2) < 0) __PYX_ERR(9, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":244
 *         return PartialDecomposition.create(result)
 * 
 *     def getConsPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns a constraint partition
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_59getConsPartition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getConsPartition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__350)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getConsPartition, __pyx_t_2) < 0) __PYX_ERR(9, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":255
 *         return ConsPart.create(result, <DetProbData>weakref.proxy(self))
 * 
 *     def getConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored constraint partitions
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_61getConsPartitions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getConsPartitions, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getConsPartitions, __pyx_t_2) < 0) __PYX_ERR(9, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":264
 *         return [ConsPart.create(self.thisptr.getConsPartition(r), self) for r in range(nconsparts)]
 * 
 *     def getCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns constraint related to a constraint index
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_63getCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__354)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getCons, __pyx_t_2) < 0) __PYX_ERR(9, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":274
 *         return Constraint.create(self.thisptr.getCons(consIndex))
 * 
 *     def getConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns list of constraint indices that have a common variable with the given constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_65getConssForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getConssForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getConssForCons, __pyx_t_2) < 0) __PYX_ERR(9, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":286
 *         return self.thisptr.getConssForCons(consIndex)
 * 
 *     def getConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the constraint indices of the coefficient matrix for a variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_67getConssForVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getConssForVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__357)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getConssForVar, __pyx_t_2) < 0) __PYX_ERR(9, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":296
 *         return self.thisptr.getConssForVar(varIndex)
 * 
 *     def getOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """determines all partialdecs from current (open) partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_69getOpenPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getOpenPartialdecs, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__358)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getOpenPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 296, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":305
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getFinishedPartialdec(self, int partialdecindex):             # <<<<<<<<<<<<<<
 *         """returns a partialdec from finished partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_71getFinishedPartialdec, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getFinishedPartialde, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getFinishedPartialdec, __pyx_t_2) < 0) __PYX_ERR(9, 305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":316
 *         return PartialDecomposition.create(result)
 * 
 *     def getFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """gets all finished partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_73getFinishedPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getFinishedPartialde_2, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__360)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getFinishedPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":325
 *         return [PartialDecomposition.create(r) for r in result]
 * 
 *     def getIndexForCons(self, Constraint cons):             # <<<<<<<<<<<<<<
 *         """returns the constraint index related to a constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_75getIndexForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getIndexForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getIndexForCons, __pyx_t_2) < 0) __PYX_ERR(9, 325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":335
 *         return self.thisptr.getIndexForCons(cons.scip_cons)
 * 
 *     def getIndexForVar(self, Variable var):             # <<<<<<<<<<<<<<
 *         """returns the variable index related to a variable
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_77getIndexForVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getIndexForVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getIndexForVar, __pyx_t_2) < 0) __PYX_ERR(9, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":345
 *         return self.thisptr.getIndexForVar(var.scip_var)
 * 
 *     def getNAncestorPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of ancestor partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_79getNAncestorPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNAncestorPartiald, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__364)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNAncestorPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":353
 *         return self.thisptr.getNAncestorPartialdecs()
 * 
 *     def getNConsPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different constraint partitions
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_81getNConsPartitions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNConsPartitions, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNConsPartitions, __pyx_t_2) < 0) __PYX_ERR(9, 353, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":361
 *         return self.thisptr.getNConsPartitions()
 * 
 *     def getNConss(self):             # <<<<<<<<<<<<<<
 *         """returns the number of variables considered in the detprobdata
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_83getNConss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__366)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNConss, __pyx_t_2) < 0) __PYX_ERR(9, 361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":369
 *         return self.thisptr.getNConss()
 * 
 *     def getNConssForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given constraint index
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_85getNConssForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNConssForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__367)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNConssForCons, __pyx_t_2) < 0) __PYX_ERR(9, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":379
 *         return self.thisptr.getNConssForCons(consIndex)
 * 
 *     def getNConssForVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of constraints for a given variable index where the variable has a nonzero entry in
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_87getNConssForVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNConssForVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__368)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNConssForVar, __pyx_t_2) < 0) __PYX_ERR(9, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":389
 *         return self.thisptr.getNConssForVar(varIndex)
 * 
 *     def getNOpenPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns size of current (open) partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_89getNOpenPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNOpenPartialdecs, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__369)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNOpenPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":397
 *         return self.thisptr.getNOpenPartialdecs()
 * 
 *     def getNFinishedPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """size of finished partialdec data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_91getNFinishedPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNFinishedPartiald, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNFinishedPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":405
 *         return self.thisptr.getNFinishedPartialdecs()
 * 
 *     def getNPartialdecs(self):             # <<<<<<<<<<<<<<
 *         """returns the number of stored partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_93getNPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNPartialdecs, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__371)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNPartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 405, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":413
 *         return self.thisptr.getNPartialdecs()
 * 
 *     def getNNonzeros(self):             # <<<<<<<<<<<<<<
 *         """returns the number of nonzero entries in the coefficient matrix
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_95getNNonzeros, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNNonzeros, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNNonzeros, __pyx_t_2) < 0) __PYX_ERR(9, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":421
 *         return self.thisptr.getNNonzeros()
 * 
 *     def getNVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns number of different variable partitions
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_97getNVarPartitions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNVarPartitions, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNVarPartitions, __pyx_t_2) < 0) __PYX_ERR(9, 421, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":429
 *         return self.thisptr.getNVarPartitions()
 * 
 *     def getNVars(self):             # <<<<<<<<<<<<<<
 *         """return the number of variables considered in the detprobdata
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_99getNVars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNVars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__374)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNVars, __pyx_t_2) < 0) __PYX_ERR(9, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":437
 *         return self.thisptr.getNVars()
 * 
 *     def getNVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the number of variables for a given constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_101getNVarsForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getNVarsForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getNVarsForCons, __pyx_t_2) < 0) __PYX_ERR(9, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":447
 *         return self.thisptr.getNVarsForCons(consIndex)
 * 
 *     def getOrigVarsFixedZero(self):             # <<<<<<<<<<<<<<
 *         """returns list of all original variables that are fixed to zero
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_103getOrigVarsFixedZero, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getOrigVarsFixedZero, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getOrigVarsFixedZero, __pyx_t_2) < 0) __PYX_ERR(9, 447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":456
 *         return [Variable.create(v) for v in result]
 * 
 *     def getRelevantConss(self):             # <<<<<<<<<<<<<<
 *         """returns list of all constraints that are not marked as deleted or obsolete
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_105getRelevantConss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getRelevantConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__379)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getRelevantConss, __pyx_t_2) < 0) __PYX_ERR(9, 456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":465
 *         return [Constraint.create(c) for c in result]
 * 
 *     def getRelevantVars(self):             # <<<<<<<<<<<<<<
 *         """returns list of all problem variables that are not fixed to 0
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_107getRelevantVars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getRelevantVars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getRelevantVars, __pyx_t_2) < 0) __PYX_ERR(9, 465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":474
 *         return [Variable.create(v) for v in result]
 * 
 *     def getModel(self):             # <<<<<<<<<<<<<<
 *         """returns the corresponding Model instance wrapping the scip data structure
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_109getModel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getModel, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__382)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getModel, __pyx_t_2) < 0) __PYX_ERR(9, 474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":483
 *         return SCIPModel.create(scip)
 * 
 *     def getSortedCandidatesNBlocks(self, object candidates):             # <<<<<<<<<<<<<<
 *         """gets the candidates for number of blocks added by the user followed by the found ones sorted in descending order by how often a candidate was proposed
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_111getSortedCandidatesNBlocks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getSortedCandidatesN, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__384)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getSortedCandidatesNBlocks, __pyx_t_2) < 0) __PYX_ERR(9, 483, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":492
 *         self.thisptr.getSortedCandidatesNBlocks(cpp_candidates)
 * 
 *     def getVal(self, row, col):             # <<<<<<<<<<<<<<
 *         """returns a coefficient from the coefficient matrix
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_113getVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getVal, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__386)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getVal, __pyx_t_2) < 0) __PYX_ERR(9, 492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":504
 *         return self.thisptr.getVal(row, col)
 * 
 *     def getValsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the nonzero coefficients of the coefficient matrix for a constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_115getValsForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getValsForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__387)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getValsForCons, __pyx_t_2) < 0) __PYX_ERR(9, 504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":516
 *         return self.thisptr.getValsForCons(consIndex)
 * 
 *     def getVarPartition(self, partitionIndex):             # <<<<<<<<<<<<<<
 *         """returns variable partition with given index
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_117getVarPartition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getVarPartition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__388)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getVarPartition, __pyx_t_2) < 0) __PYX_ERR(9, 516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":527
 *         return VarPart.create(result, self)
 * 
 *     def getVarPartitions(self):             # <<<<<<<<<<<<<<
 *         """returns list to stored variable partitions
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_119getVarPartitions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getVarPartitions, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__389)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getVarPartitions, __pyx_t_2) < 0) __PYX_ERR(9, 527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":536
 *         return [VarPart.create(r, self) for r in result]
 * 
 *     def getVar(self, varIndex):             # <<<<<<<<<<<<<<
 *         """returns variable related to a variable index
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_121getVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__390)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getVar, __pyx_t_2) < 0) __PYX_ERR(9, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":544
 *         return Variable.create(self.thisptr.getVar(varIndex))
 * 
 *     def getVarsForCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns the variable indices of the coefficient matrix for a constraint
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_123getVarsForCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_getVarsForCons, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__391)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_getVarsForCons, __pyx_t_2) < 0) __PYX_ERR(9, 544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":554
 *         return self.thisptr.getVarsForCons(consIndex)
 * 
 *     def isConsCardinalityCons(self, consIndex):             # <<<<<<<<<<<<<<
 *         """returns whether a constraint is a cardinality constraint, i.e. of the .. math::`\\sum_{i} x_i = b`
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_125isConsCardinalityCons, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isConsCardinalityCon, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isConsCardinalityCons, __pyx_t_2) < 0) __PYX_ERR(9, 554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":564
 *         return self.thisptr.isConsCardinalityCons(consIndex)
 * 
 *     def isConssAdjInitialized(self):             # <<<<<<<<<<<<<<
 *         """determines whether or not the constraint-constraint adjacency data structure is initilized
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_127isConssAdjInitialized, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isConssAdjInitialize, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__393)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isConssAdjInitialized, __pyx_t_2) < 0) __PYX_ERR(9, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":572
 *         return self.thisptr.isConssAdjInitialized()
 * 
 *     def isConsSetpp(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified indec partitioning, or packing covering constraint?
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_129isConsSetpp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isConsSetpp, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__394)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isConsSetpp, __pyx_t_2) < 0) __PYX_ERR(9, 572, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":582
 *         return self.thisptr.isConsSetpp(consIndex)
 * 
 *     def isConsSetppc(self, consIndex):             # <<<<<<<<<<<<<<
 *         """is cons with specified index partitioning packing, or covering constraint?
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_131isConsSetppc, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isConsSetppc, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isConsSetppc, __pyx_t_2) < 0) __PYX_ERR(9, 582, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":592
 *         return self.thisptr.isConsSetppc(consIndex)
 * 
 *     def isPartialdecDuplicateofFinished(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """checks if partialdec is a duplicate of an existing finished partialdec
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_133isPartialdecDuplicateofFinished, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isPartialdecDuplicat, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__396)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isPartialdecDuplicateofFinished, __pyx_t_2) < 0) __PYX_ERR(9, 592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":603
 *         return self.thisptr.isPartialdecDuplicateofFinished(cpp_partialdec)
 * 
 *     def isAssignedToOrigProb(self):             # <<<<<<<<<<<<<<
 *         """returns True if the matrix structure corresponds to the presolved problem
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_135isAssignedToOrigProb, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_isAssignedToOrigProb, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_isAssignedToOrigProb, __pyx_t_2) < 0) __PYX_ERR(9, 603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":611
 *         return self.thisptr.isAssignedToOrigProb()
 * 
 *     def partialdecIsNoDuplicateOfPartialdecs(self, PartialDecomposition comppartialdec, object partialdecs, sort):             # <<<<<<<<<<<<<<
 *         """check if partialdec is a duplicate of any given partialdecs
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_137partialdecIsNoDuplicateOfPartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_partialdecIsNoDuplic, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__399)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_partialdecIsNoDuplicateOfPartial, __pyx_t_2) < 0) __PYX_ERR(9, 611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":632
 *         return self.thisptr.partialdecIsNoDuplicateOfPartialdecs(cpp_comppartialdec, cpp_partialdecs, sort)
 * 
 *     def sortFinishedForScore(self):             # <<<<<<<<<<<<<<
 *         """sorts partialdecs in finished partialdecs data structure according to the current scoretype
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_139sortFinishedForScore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_sortFinishedForScore, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_sortFinishedForScore, __pyx_t_2) < 0) __PYX_ERR(9, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "src/pygcgopt/detprobdata.pxi":637
 *         self.thisptr.sortFinishedForScore()
 * 
 *     def translatePartialdecs(self, DetProbData otherdata, object otherpartialdecs):             # <<<<<<<<<<<<<<
 *         """translates partialdecs if the index structure of the problem has changed, e.g. due to presolving
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_141translatePartialdecs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData_translatePartialdecs, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__402)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_DetProbData, __pyx_n_s_translatePartialdecs, __pyx_t_2) < 0) __PYX_ERR(9, 637, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_DetProbData);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_143__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__403)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.thisptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11DetProbData_145__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_DetProbData___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__404)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/pygcgopt/consclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeConsClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of constraint classifier'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_1freeConsClassifier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsClassifier_freeConsClassifie, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__405)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsClassifier, __pyx_n_s_freeConsClassifier, __pyx_t_2) < 0) __PYX_ERR(3, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);

  /* "src/pygcgopt/consclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, conss, partition):             # <<<<<<<<<<<<<<
 *         pass
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_3classify, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsClassifier_classify, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__407)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsClassifier, __pyx_n_s_classify, __pyx_t_2) < 0) __PYX_ERR(3, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsClassifier___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsClassifier, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ConsClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ConsClassifier__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14ConsClassifier_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConsClassifier___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__409)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_ConsClassifier, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_ConsClassifier);

  /* "src/pygcgopt/varclassifier.pxi":6
 *     cdef public str name
 * 
 *     def freeVarClassifier(self):             # <<<<<<<<<<<<<<
 *         '''calls destructor and frees memory of variable classifier'''
 *         pass
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13VarClassifier_1freeVarClassifier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarClassifier_freeVarClassifier, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__410)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarClassifier, __pyx_n_s_freeVarClassifier, __pyx_t_2) < 0) __PYX_ERR(10, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarClassifier);

  /* "src/pygcgopt/varclassifier.pxi":10
 *         pass
 * 
 *     def classify(self, vars, partition):             # <<<<<<<<<<<<<<
 *         return {}
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13VarClassifier_3classify, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarClassifier_classify, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__412)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarClassifier, __pyx_n_s_classify, __pyx_t_2) < 0) __PYX_ERR(10, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarClassifier);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13VarClassifier_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarClassifier___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__413)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarClassifier, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarClassifier);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_VarClassifier, (type(self), 0x48f811e, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_VarClassifier__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13VarClassifier_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_VarClassifier___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__414)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_VarClassifier, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_VarClassifier);

  /* "pygcgopt/gcg.pyx":48
 * 
 * cdef class PY_GCG_PRICINGSTATUS:
 *     UNKNOWN       = GCG_PRICINGSTATUS_UNKNOWN             # <<<<<<<<<<<<<<
 *     NOTAPPLICABLE = GCG_PRICINGSTATUS_NOTAPPLICABLE
 *     SOLVERLIMIT   = GCG_PRICINGSTATUS_SOLVERLIMIT
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_UNKNOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_UNKNOWN, __pyx_t_2) < 0) __PYX_ERR(4, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":49
 * cdef class PY_GCG_PRICINGSTATUS:
 *     UNKNOWN       = GCG_PRICINGSTATUS_UNKNOWN
 *     NOTAPPLICABLE = GCG_PRICINGSTATUS_NOTAPPLICABLE             # <<<<<<<<<<<<<<
 *     SOLVERLIMIT   = GCG_PRICINGSTATUS_SOLVERLIMIT
 *     OPTIMAL       = GCG_PRICINGSTATUS_OPTIMAL
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_NOTAPPLICABLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_NOTAPPLICABLE, __pyx_t_2) < 0) __PYX_ERR(4, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":50
 *     UNKNOWN       = GCG_PRICINGSTATUS_UNKNOWN
 *     NOTAPPLICABLE = GCG_PRICINGSTATUS_NOTAPPLICABLE
 *     SOLVERLIMIT   = GCG_PRICINGSTATUS_SOLVERLIMIT             # <<<<<<<<<<<<<<
 *     OPTIMAL       = GCG_PRICINGSTATUS_OPTIMAL
 *     INFEASIBLE    = GCG_PRICINGSTATUS_INFEASIBLE
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_SOLVERLIMIT); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_SOLVERLIMIT, __pyx_t_2) < 0) __PYX_ERR(4, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":51
 *     NOTAPPLICABLE = GCG_PRICINGSTATUS_NOTAPPLICABLE
 *     SOLVERLIMIT   = GCG_PRICINGSTATUS_SOLVERLIMIT
 *     OPTIMAL       = GCG_PRICINGSTATUS_OPTIMAL             # <<<<<<<<<<<<<<
 *     INFEASIBLE    = GCG_PRICINGSTATUS_INFEASIBLE
 *     UNBOUNDED     = GCG_PRICINGSTATUS_UNBOUNDED
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_OPTIMAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_OPTIMAL, __pyx_t_2) < 0) __PYX_ERR(4, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":52
 *     SOLVERLIMIT   = GCG_PRICINGSTATUS_SOLVERLIMIT
 *     OPTIMAL       = GCG_PRICINGSTATUS_OPTIMAL
 *     INFEASIBLE    = GCG_PRICINGSTATUS_INFEASIBLE             # <<<<<<<<<<<<<<
 *     UNBOUNDED     = GCG_PRICINGSTATUS_UNBOUNDED
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_INFEASIBLE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_INFEASIBLE, __pyx_t_2) < 0) __PYX_ERR(4, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":53
 *     OPTIMAL       = GCG_PRICINGSTATUS_OPTIMAL
 *     INFEASIBLE    = GCG_PRICINGSTATUS_INFEASIBLE
 *     UNBOUNDED     = GCG_PRICINGSTATUS_UNBOUNDED             # <<<<<<<<<<<<<<
 * 
 * cdef class PY_USERGIVEN:
 */
  __pyx_t_2 = __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS_UNBOUNDED); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_UNBOUNDED, __pyx_t_2) < 0) __PYX_ERR(4, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_GCG_PRICINGSTATUS___reduce_cy, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__415)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_GCG_PRICINGSTATUS, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_GCG_PRICINGSTATUS__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_20PY_GCG_PRICINGSTATUS_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_GCG_PRICINGSTATUS___setstate, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__416)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_GCG_PRICINGSTATUS);

  /* "pygcgopt/gcg.pyx":56
 * 
 * cdef class PY_USERGIVEN:
 *     PY_NOT                    = NOT             # <<<<<<<<<<<<<<
 *     PY_PARTIAL                = PARTIAL
 *     PY_COMPLETE               = COMPLETE
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::NOT); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_PY_NOT, __pyx_t_2) < 0) __PYX_ERR(4, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "pygcgopt/gcg.pyx":57
 * cdef class PY_USERGIVEN:
 *     PY_NOT                    = NOT
 *     PY_PARTIAL                = PARTIAL             # <<<<<<<<<<<<<<
 *     PY_COMPLETE               = COMPLETE
 *     PY_COMPLETED_CONSTOMASTER = COMPLETED_CONSTOMASTER
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::PARTIAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_PY_PARTIAL, __pyx_t_2) < 0) __PYX_ERR(4, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "pygcgopt/gcg.pyx":58
 *     PY_NOT                    = NOT
 *     PY_PARTIAL                = PARTIAL
 *     PY_COMPLETE               = COMPLETE             # <<<<<<<<<<<<<<
 *     PY_COMPLETED_CONSTOMASTER = COMPLETED_CONSTOMASTER
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::COMPLETE); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_PY_COMPLETE, __pyx_t_2) < 0) __PYX_ERR(4, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "pygcgopt/gcg.pyx":59
 *     PY_PARTIAL                = PARTIAL
 *     PY_COMPLETE               = COMPLETE
 *     PY_COMPLETED_CONSTOMASTER = COMPLETED_CONSTOMASTER             # <<<<<<<<<<<<<<
 * 
 * cdef class PY_VAR_DECOMPINFO:
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::COMPLETED_CONSTOMASTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_PY_COMPLETED_CONSTOMASTER, __pyx_t_2) < 0) __PYX_ERR(4, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_12PY_USERGIVEN_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_USERGIVEN___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__417)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_USERGIVEN, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_USERGIVEN__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_12PY_USERGIVEN_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_USERGIVEN___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__418)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_USERGIVEN);

  /* "pygcgopt/gcg.pyx":62
 * 
 * cdef class PY_VAR_DECOMPINFO:
 *     PY_ALL     = ALL             # <<<<<<<<<<<<<<
 *     PY_LINKING = LINKING
 *     PY_MASTER  = MASTER
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::ALL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_PY_ALL, __pyx_t_2) < 0) __PYX_ERR(4, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":63
 * cdef class PY_VAR_DECOMPINFO:
 *     PY_ALL     = ALL
 *     PY_LINKING = LINKING             # <<<<<<<<<<<<<<
 *     PY_MASTER  = MASTER
 *     PY_BLOCK   = BLOCK
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::LINKING); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_PY_LINKING, __pyx_t_2) < 0) __PYX_ERR(4, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":64
 *     PY_ALL     = ALL
 *     PY_LINKING = LINKING
 *     PY_MASTER  = MASTER             # <<<<<<<<<<<<<<
 *     PY_BLOCK   = BLOCK
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::MASTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_PY_MASTER, __pyx_t_2) < 0) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":65
 *     PY_LINKING = LINKING
 *     PY_MASTER  = MASTER
 *     PY_BLOCK   = BLOCK             # <<<<<<<<<<<<<<
 * 
 * cdef class PY_CONS_DECOMPINFO:
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::BLOCK); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_PY_BLOCK, __pyx_t_2) < 0) __PYX_ERR(4, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_VAR_DECOMPINFO___reduce_cytho, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__419)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_VAR_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_VAR_DECOMPINFO__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_17PY_VAR_DECOMPINFO_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_VAR_DECOMPINFO___setstate_cyt, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__420)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_VAR_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":68
 * 
 * cdef class PY_CONS_DECOMPINFO:
 *     PY_BOTH         = BOTH             # <<<<<<<<<<<<<<
 *     PY_ONLY_MASTER  = ONLY_MASTER
 *     PY_ONLY_PRICING = ONLY_PRICING
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(gcg::BOTH); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, __pyx_n_s_PY_BOTH, __pyx_t_2) < 0) __PYX_ERR(4, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":69
 * cdef class PY_CONS_DECOMPINFO:
 *     PY_BOTH         = BOTH
 *     PY_ONLY_MASTER  = ONLY_MASTER             # <<<<<<<<<<<<<<
 *     PY_ONLY_PRICING = ONLY_PRICING
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(gcg::ONLY_MASTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, __pyx_n_s_PY_ONLY_MASTER, __pyx_t_2) < 0) __PYX_ERR(4, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":70
 *     PY_BOTH         = BOTH
 *     PY_ONLY_MASTER  = ONLY_MASTER
 *     PY_ONLY_PRICING = ONLY_PRICING             # <<<<<<<<<<<<<<
 * 
 * cdef class Model(SCIPModel):
 */
  __pyx_t_2 = __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(gcg::ONLY_PRICING); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, __pyx_n_s_PY_ONLY_PRICING, __pyx_t_2) < 0) __PYX_ERR(4, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_CONS_DECOMPINFO___reduce_cyth, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__421)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_PY_CONS_DECOMPINFO, (type(self), 0xe3b0c44, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_PY_CONS_DECOMPINFO__set_state(self, __pyx_state)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_18PY_CONS_DECOMPINFO_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PY_CONS_DECOMPINFO___setstate_cy, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_PY_CONS_DECOMPINFO);

  /* "pygcgopt/gcg.pyx":75
 *     """Main class for interaction with the GCG solver."""
 * 
 *     def includeDefaultPlugins(self):             # <<<<<<<<<<<<<<
 *         """Includes all default plug-ins of GCG into SCIP
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_1includeDefaultPlugins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includeDefaultPlugins, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__423)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includeDefaultPlugins, __pyx_t_2) < 0) __PYX_ERR(4, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":82
 *         PY_SCIP_CALL(SCIPincludeGcgPlugins(self._scip))
 * 
 *     def addVar(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         pyVar = <Variable>super().addVar(*args, **kwargs)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_3addVar, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_addVar, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__425)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_addVar, __pyx_t_2) < 0) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":89
 *         return pyVar
 * 
 *     def presolve(self):             # <<<<<<<<<<<<<<
 *         """Presolve the problem."""
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_5presolve, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_presolve, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__426)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_presolve, __pyx_t_2) < 0) __PYX_ERR(4, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":93
 *         PY_SCIP_CALL(GCGpresolve(self._scip))
 * 
 *     def detect(self):             # <<<<<<<<<<<<<<
 *         """Detect the problem.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_7detect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_detect, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__427)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_detect, __pyx_t_2) < 0) __PYX_ERR(4, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":103
 *         PY_SCIP_CALL(GCGdetect(self._scip))
 * 
 *     def printStatistics(self):             # <<<<<<<<<<<<<<
 *         """Print solving statistics of GCG to stdout."""
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_9printStatistics, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_printStatistics, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__428)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_printStatistics, __pyx_t_2) < 0) __PYX_ERR(4, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":107
 *         PY_SCIP_CALL(GCGprintStatistics(self._scip, NULL))
 * 
 *     def printVersion(self):             # <<<<<<<<<<<<<<
 *         """Print version, copyright information and compile mode of GCG and SCIP"""
 *         GCGprintVersion(self._scip, NULL)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_11printVersion, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_printVersion, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__429)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_printVersion, __pyx_t_2) < 0) __PYX_ERR(4, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":113
 *         super().printVersion()
 * 
 *     def optimize(self):             # <<<<<<<<<<<<<<
 *         """Optimize the problem.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_13optimize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_optimize, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__430)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_optimize, __pyx_t_2) < 0) __PYX_ERR(4, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":121
 *         self._bestSol = Solution.create(self._scip, SCIPgetBestSol(self._scip))
 * 
 *     def getDualbound(self):             # <<<<<<<<<<<<<<
 *         """Retrieve the best dual bound.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_15getDualbound, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getDualbound, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__431)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getDualbound, __pyx_t_2) < 0) __PYX_ERR(4, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":133
 *         return GCGgetDualbound(self._scip)
 * 
 *     def getDetprobdataOrig(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for unpresolved problem
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_17getDetprobdataOrig, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getDetprobdataOrig, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__433)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getDetprobdataOrig, __pyx_t_2) < 0) __PYX_ERR(4, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":139
 *         return DetProbData.create(detprobdata)
 * 
 *     def getDetprobdataPresolved(self):             # <<<<<<<<<<<<<<
 *         """returns the detprobdata for presolved problem
 *         """
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_19getDetprobdataPresolved, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getDetprobdataPresolved, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__434)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getDetprobdataPresolved, __pyx_t_2) < 0) __PYX_ERR(4, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":145
 *         return DetProbData.create(detprobdata)
 * 
 *     def listDecompositions(self):             # <<<<<<<<<<<<<<
 *         """Lists all finnished decompositions found during the detection loop or provided by the user."""
 *         cdef int npartialdecs = GCGconshdlrDecompGetNPartialdecs(self._scip)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_21listDecompositions, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listDecompositions, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__436)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listDecompositions, __pyx_t_2) < 0) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":158
 *         return decomps
 * 
 *     def getPartDecompFromID(self, id):             # <<<<<<<<<<<<<<
 *         """returns a partial decomposition regarding to the given partialdecomp id
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_23getPartDecompFromID, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getPartDecompFromID, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__438)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getPartDecompFromID, __pyx_t_2) < 0) __PYX_ERR(4, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":168
 *         return pd
 * 
 *     def addDecompositionFromConss(self, master_conss, *block_conss):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG based on constraints.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_25addDecompositionFromConss, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_addDecompositionFromConss, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__440)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_addDecompositionFromConss, __pyx_t_2) < 0) __PYX_ERR(4, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":188
 *         return pd
 * 
 *     def addPreexistingPartialDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         self.addDecomposition(partialdec)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_27addPreexistingPartialDecomposition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_addPreexistingPartialDecom, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__441)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_addPreexistingPartialDecompositi, __pyx_t_2) < 0) __PYX_ERR(4, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":191
 *         self.addDecomposition(partialdec)
 * 
 *     def addDecomposition(self, PartialDecomposition partialdec):             # <<<<<<<<<<<<<<
 *         """Adds a user specified decomposition to GCG.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_29addDecomposition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_addDecomposition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_addDecomposition, __pyx_t_2) < 0) __PYX_ERR(4, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":202
 *         GCGconshdlrDecompAddPreexisitingPartialDec(self._scip, partialdec.thisptr)
 * 
 *     def createDecomposition(self):             # <<<<<<<<<<<<<<
 *         """Creates a new empty PartialDecomposition.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_31createDecomposition, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_createDecomposition, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__444)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_createDecomposition, __pyx_t_2) < 0) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":219
 *         return PartialDecomposition.create(decomp)
 * 
 *     def includePricingSolver(self, PricingSolver pricingSolver, solvername, desc, priority=0, heuristicEnabled=False, exactEnabled=False):             # <<<<<<<<<<<<<<
 *         c_solvername = str_conversion(solvername)
 *         c_desc = str_conversion(desc)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_33includePricingSolver, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includePricingSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__447);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includePricingSolver, __pyx_t_2) < 0) __PYX_ERR(4, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":232
 *         Py_INCREF(pricingSolver)
 * 
 *     def listPricingSolvers(self):             # <<<<<<<<<<<<<<
 *         cdef SCIPModel mp = <SCIPModel>self.getMasterProb()
 *         cdef int n_pricing_solvers = GCGpricerGetNSolvers(mp._scip)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_35listPricingSolvers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listPricingSolvers, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__449)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listPricingSolvers, __pyx_t_2) < 0) __PYX_ERR(4, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":239
 *         return [GCGsolverGetName(pricing_solvers[i]).decode('utf-8') for i in range(n_pricing_solvers)]
 * 
 *     def setPricingSolverEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact and heuristic solving for the specified pricing solver.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_37setPricingSolverEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setPricingSolverEnabled, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__451)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setPricingSolverEnabled, __pyx_t_2) < 0) __PYX_ERR(4, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":253
 *         self.setPricingSolverHeuristicEnabled(pricing_solver_name, is_enabled)
 * 
 *     def setPricingSolverExactEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables exact solving for the specified pricing solver.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_39setPricingSolverExactEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setPricingSolverExactEnabl, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__453)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setPricingSolverExactEnabled, __pyx_t_2) < 0) __PYX_ERR(4, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":265
 *         self.setBoolParam("pricingsolver/{}/exactenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def setPricingSolverHeuristicEnabled(self, pricing_solver_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables heuristic solving for the specified pricing solver.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_41setPricingSolverHeuristicEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setPricingSolverHeuristicE, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__454)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setPricingSolverHeuristicEnabled, __pyx_t_2) < 0) __PYX_ERR(4, 265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":277
 *         self.setBoolParam("pricingsolver/{}/heurenabled".format(pricing_solver_name), is_enabled)
 * 
 *     def includeConsClassifier(self, ConsClassifier consclassifier, consclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a constraint classifier
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_43includeConsClassifier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includeConsClassifier, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__456)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__457);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includeConsClassifier, __pyx_t_2) < 0) __PYX_ERR(4, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":294
 *         Py_INCREF(consclassifier)
 * 
 *     def getNConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all constraint classifiers
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_45getNConsClassifiers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getNConsClassifiers, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getNConsClassifiers, __pyx_t_2) < 0) __PYX_ERR(4, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":303
 *         return n_consclassifiers
 * 
 *     def listConsClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all constraint classifiers that are currently included
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_47listConsClassifiers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listConsClassifiers, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listConsClassifiers, __pyx_t_2) < 0) __PYX_ERR(4, 303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":313
 *         return [GCGconsClassifierGetName(consclassifiers[i]).decode('utf-8') for i in range(n_consclassifiers)]
 * 
 *     def includeVarClassifier(self, VarClassifier varclassifier, varclassifiername, desc, priority=0, enabled=True):             # <<<<<<<<<<<<<<
 *         """includes a variable classifier
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_49includeVarClassifier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includeVarClassifier, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__463)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__457);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includeVarClassifier, __pyx_t_2) < 0) __PYX_ERR(4, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":330
 *         Py_INCREF(varclassifier)
 * 
 *     def getNVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """returns the number of all variable classifiers
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_51getNVarClassifiers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getNVarClassifiers, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__465)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getNVarClassifiers, __pyx_t_2) < 0) __PYX_ERR(4, 330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":339
 *         return n_varclassifiers
 * 
 *     def listVarClassifiers(self):             # <<<<<<<<<<<<<<
 *         """lists all variable classifiers that are currently included
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_53listVarClassifiers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listVarClassifiers, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__467)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listVarClassifiers, __pyx_t_2) < 0) __PYX_ERR(4, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":349
 *         return [GCGvarClassifierGetName(varclassifiers[i]).decode('utf-8') for i in range(n_varclassifiers)]
 * 
 *     def setVarClassifierEnabled(self, varclassifier_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """enables or disables a variable classifier
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_55setVarClassifierEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setVarClassifierEnabled, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setVarClassifierEnabled, __pyx_t_2) < 0) __PYX_ERR(4, 349, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":360
 *         self.setBoolParam("detection/classification/varclassifier/{}/enabled".format(varclassifier_name), is_enabled)
 * 
 *     def includeDetector(self, Detector detector, detectorname, decchar, desc, freqcallround=1, maxcallround=INT_MAX, mincallround=0, freqcallroundoriginal=1, maxcallroundoriginal=INT_MAX, mincallroundoriginal=0, priority=0, enabled=True, enabledfinishing=False, enabledpostprocessing=False, skip=False, usefulrecall=False):             # <<<<<<<<<<<<<<
 *         """includes a detector
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(INT_MAX); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_k__10 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int(INT_MAX); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_k__11 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int(INT_MAX); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(INT_MAX); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(12); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_1)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_0)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_int_1)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_t_3)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_int_0)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 6, __pyx_int_0)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 7, Py_True)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 8, Py_False)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 9, Py_False)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 10, Py_False)) __PYX_ERR(4, 360, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 11, Py_False)) __PYX_ERR(4, 360, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_57includeDetector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includeDetector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includeDetector, __pyx_t_3) < 0) __PYX_ERR(4, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":386
 *         Py_INCREF(detector)
 * 
 *     def includeScore(self, Score score, scorename, shortname, desc):             # <<<<<<<<<<<<<<
 *         """includes a score
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_59includeScore, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_includeScore, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_includeScore, __pyx_t_3) < 0) __PYX_ERR(4, 386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":405
 *         Py_INCREF(score)
 * 
 *     def listDetectors(self):             # <<<<<<<<<<<<<<
 *         """Lists all detectors that are currently included
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_61listDetectors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listDetectors, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listDetectors, __pyx_t_3) < 0) __PYX_ERR(4, 405, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":421
 *         return [GCGdetectorGetName(detectors[i]).decode('utf-8') for i in range(n_detectors)]
 * 
 *     def listScores(self):             # <<<<<<<<<<<<<<
 *         """Lists all scores that are currently included
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_63listScores, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_listScores, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__477)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_listScores, __pyx_t_3) < 0) __PYX_ERR(4, 421, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":431
 *         return [GCGscoreGetName(scores[i]).decode('utf-8') for i in range(n_scores)]
 * 
 *     def setDetectorEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for detecting partial decompositions.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_65setDetectorEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setDetectorEnabled, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setDetectorEnabled, __pyx_t_3) < 0) __PYX_ERR(4, 431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":446
 *         self.setBoolParam("detection/detectors/{}/enabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorFinishingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for finishing partial decompositions.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_67setDetectorFinishingEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setDetectorFinishingEnable, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__480)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setDetectorFinishingEnabled, __pyx_t_3) < 0) __PYX_ERR(4, 446, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":459
 *         self.setBoolParam("detection/detectors/{}/finishingenabled".format(detector_name), is_enabled)
 * 
 *     def setDetectorPostprocessingEnabled(self, detector_name, is_enabled=True):             # <<<<<<<<<<<<<<
 *         """Enables or disables a detector for postprocessing partial decompositions.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_69setDetectorPostprocessingEnabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setDetectorPostprocessingE, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__481)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__452);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setDetectorPostprocessingEnabled, __pyx_t_3) < 0) __PYX_ERR(4, 459, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":472
 *         self.setBoolParam("detection/detectors/{}/postprocessingenabled".format(detector_name), is_enabled)
 * 
 *     def getMasterProb(self):             # <<<<<<<<<<<<<<
 *         """Provides access to the GCG master problem.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_71getMasterProb, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getMasterProb, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__483)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getMasterProb, __pyx_t_3) < 0) __PYX_ERR(4, 472, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":480
 *         return GCGMasterModel.create(master_prob)
 * 
 *     def setGCGSeparating(self, setting):             # <<<<<<<<<<<<<<
 *         """Sets parameter settings of all separators
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_73setGCGSeparating, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_setGCGSeparating, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__485)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_setGCGSeparating, __pyx_t_3) < 0) __PYX_ERR(4, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":488
 *         PY_SCIP_CALL(GCGsetSeparators(self._scip, setting))
 * 
 *     def writeAllDecomps(self, directory="alldecompositions/", extension="dec", bool original=True, bool presolved=True, createDirectory=True):             # <<<<<<<<<<<<<<
 *         """Writes all decompositions to disk
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_75writeAllDecomps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_writeAllDecomps, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__487)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__488);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_writeAllDecomps, __pyx_t_3) < 0) __PYX_ERR(4, 488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "pygcgopt/gcg.pyx":501
 *         PY_SCIP_CALL(GCGwriteAllDecomps(self._scip, c_directory, c_extension, original, presolved))
 * 
 *     def getMastervars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the master variables corresponding to the variable of original problem
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_77getMastervars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model_getMastervars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_Model, __pyx_n_s_getMastervars, __pyx_t_3) < 0) __PYX_ERR(4, 501, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_Model);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_79__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__491)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5Model_81__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Model___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__492)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":524
 *         return model
 * 
 *     def createGcgCol(self, probnr, variables, vals, bool isray, redcost):             # <<<<<<<<<<<<<<
 *         """create a gcg column
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_1createGcgCol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGPricingModel_createGcgCol, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__494)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel, __pyx_n_s_createGcgCol, __pyx_t_3) < 0) __PYX_ERR(4, 524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_GCGPricingModel);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGPricingModel___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__495)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_15GCGPricingModel_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGPricingModel___setstate_cytho, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":564
 *         return model
 * 
 *     def addCol(self, GCGColumn col):             # <<<<<<<<<<<<<<
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_1addCol, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGMasterModel_addCol, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel, __pyx_n_s_addCol, __pyx_t_3) < 0) __PYX_ERR(4, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel);

  /* "pygcgopt/gcg.pyx":567
 *         PY_SCIP_CALL(GCGpricerAddCol(self._scip, col.gcg_col))
 * 
 *     def getOrigvars(self, var):             # <<<<<<<<<<<<<<
 *         """Returns the original variables corresponding to the variable of master problem
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_3getOrigvars, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGMasterModel_getOrigvars, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__500)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel, __pyx_n_s_getOrigvars, __pyx_t_3) < 0) __PYX_ERR(4, 567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8pygcgopt_3gcg_GCGMasterModel);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGMasterModel___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._scip,self._valid cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_14GCGMasterModel_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGMasterModel___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__502)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_9GCGColumn_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGColumn___reduce_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.gcg_col cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_9GCGColumn_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GCGColumn___setstate_cython, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__504)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(5, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Detector(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_1__pyx_unpickle_Detector, 0, __pyx_n_s_pyx_unpickle_Detector, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__506)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Detector, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_Detector__set_state(<Detector> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Detector__set_state(Detector __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.detectorname = __pyx_state[0]; __pyx_result.model = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_3__pyx_unpickle_PricingSolver, 0, __pyx_n_s_pyx_unpickle_PricingSolver, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PricingSolver, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_Score(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_5__pyx_unpickle_Score, 0, __pyx_n_s_pyx_unpickle_Score, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__508)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Score, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_Score__set_state(<Score> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Score__set_state(Score __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.scorename = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_7__pyx_unpickle_ConsClassifier, 0, __pyx_n_s_pyx_unpickle_ConsClassifier, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ConsClassifier, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_VarClassifier(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_9__pyx_unpickle_VarClassifier, 0, __pyx_n_s_pyx_unpickle_VarClassifier, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__510)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_VarClassifier, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_VarClassifier__set_state(<VarClassifier> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_VarClassifier__set_state(VarClassifier __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result.model = __pyx_state[0]; __pyx_result.name = __pyx_state[1]
 *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_11__pyx_unpickle_PY_GCG_PRICINGSTATUS, 0, __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PY_GCG_PRICINGSTA, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_PY_USERGIVEN(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_13__pyx_unpickle_PY_USERGIVEN, 0, __pyx_n_s_pyx_unpickle_PY_USERGIVEN, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__512)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PY_USERGIVEN, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_PY_USERGIVEN__set_state(<PY_USERGIVEN> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_PY_USERGIVEN__set_state(PY_USERGIVEN __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_15__pyx_unpickle_PY_VAR_DECOMPINFO, 0, __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PY_VAR_DECOMPINFO, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_PY_CONS_DECOMPINFO(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_8pygcgopt_3gcg_17__pyx_unpickle_PY_CONS_DECOMPINFO, 0, __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF, NULL, __pyx_n_s_pygcgopt_gcg, __pyx_d, ((PyObject *)__pyx_codeobj__514)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_PY_CONS_DECOMPINF, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pygcgopt/gcg.pyx":1
 * # distutils: language = c++             # <<<<<<<<<<<<<<
 * 
 * from pyscipopt.scip import PY_SCIP_CALL
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(4, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__pyx_m) {
    if (__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init pygcgopt.gcg", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    #if !CYTHON_USE_MODULE_STATE
    Py_CLEAR(__pyx_m);
    #else
    Py_DECREF(__pyx_m);
    if (pystate_addmodule_run) {
      PyObject *tp, *value, *tb;
      PyErr_Fetch(&tp, &value, &tb);
      PyState_RemoveModule(&__pyx_moduledef);
      PyErr_Restore(tp, value, tb);
    }
    #endif
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init pygcgopt.gcg");
  }
  __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
}
/* #### Code section: cleanup_globals ### */
/* #### Code section: cleanup_module ### */
/* #### Code section: main_method ### */
/* #### Code section: utility_code_pragmas ### */
#ifdef _MSC_VER
#pragma warning( push )
/* Warning 4127: conditional expression is constant
 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
 * compile-time, so this warning is not useful
 */
#pragma warning( disable : 4127 )
#endif



/* #### Code section: utility_code_def ### */

/* --- 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

/* 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) {
    int result;
    PyObject *exc_type;
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *current_exception = tstate->current_exception;
    if (unlikely(!current_exception)) return 0;
    exc_type = (PyObject*) Py_TYPE(current_exception);
    if (exc_type == err) return 1;
#else
    exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
#endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(exc_type);
    #endif
    if (unlikely(PyTuple_Check(err))) {
        result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    } else {
        result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
    }
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(exc_type);
    #endif
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *tmp_value;
    assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
    if (value) {
        #if CYTHON_COMPILING_IN_CPYTHON
        if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
        #endif
            PyException_SetTraceback(value, tb);
    }
    tmp_value = tstate->current_exception;
    tstate->current_exception = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
#else
    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);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject* exc_value;
    exc_value = tstate->current_exception;
    tstate->current_exception = 0;
    *value = exc_value;
    *type = NULL;
    *tb = NULL;
    if (exc_value) {
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        #if CYTHON_COMPILING_IN_CPYTHON
        *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
        Py_XINCREF(*tb);
        #else
        *tb = PyException_GetTraceback(exc_value);
        #endif
    }
#else
    *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
}
#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

/* PyObjectGetAttrStrNoError */
#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#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;
#endif
}

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        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;
}

/* 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);
}

/* 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");
}

/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
    PyObject* exc_type;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    exc_type = __Pyx_PyErr_CurrentExceptionType();
    if (unlikely(exc_type)) {
        if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
            return -1;
        __Pyx_PyErr_Clear();
        return 0;
    }
    return 0;
}

/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    }
    return __Pyx_IterFinish();
}

/* TupleAndListFromArray */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
    PyObject *v;
    Py_ssize_t i;
    for (i = 0; i < length; i++) {
        v = dest[i] = src[i];
        Py_INCREF(v);
    }
}
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        Py_INCREF(__pyx_empty_tuple);
        return __pyx_empty_tuple;
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
    return res;
}
static CYTHON_INLINE PyObject *
__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return PyList_New(0);
    }
    res = PyList_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
    return res;
}
#endif

/* BytesEquals */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
        #if CYTHON_PEP393_ENABLED
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
        #else
            hash1 = ((PyUnicodeObject*)s1)->hash;
            hash2 = ((PyUnicodeObject*)s2)->hash;
        #endif
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        #if PY_MAJOR_VERSION < 3
        Py_XDECREF(owned_ref);
        #endif
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
    for (i = 0; i < n; i++)
    {
        if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
        if (unlikely(eq != 0)) {
            if (unlikely(eq < 0)) return NULL;
            return kwvalues[i];
        }
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
    PyObject *dict;
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#endif

/* 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);
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kw,
    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(kw, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
        Py_ssize_t kwsize;
#if CYTHON_ASSUME_SAFE_MACROS
        kwsize = PyTuple_GET_SIZE(kw);
#else
        kwsize = PyTuple_Size(kw);
        if (kwsize < 0) return 0;
#endif
        if (unlikely(kwsize == 0))
            return 1;
        if (!kw_allowed) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, 0);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            goto invalid_keyword;
        }
#if PY_VERSION_HEX < 0x03090000
        for (pos = 0; pos < kwsize; pos++) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, pos);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
        }
#endif
        return 1;
    }
    while (PyDict_Next(kw, &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:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* 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 *const *kwvalues,
    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;
    int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
    while (1) {
        Py_XDECREF(key); key = NULL;
        Py_XDECREF(value); value = NULL;
        if (kwds_is_tuple) {
            Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(kwds);
#else
            size = PyTuple_Size(kwds);
            if (size < 0) goto bad;
#endif
            if (pos >= size) break;
#if CYTHON_AVOID_BORROWED_REFS
            key = __Pyx_PySequence_ITEM(kwds, pos);
            if (!key) goto bad;
#elif CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kwds, pos);
#else
            key = PyTuple_GetItem(kwds, pos);
            if (!key) goto bad;
#endif
            value = kwvalues[pos];
            pos++;
        }
        else
        {
            if (!PyDict_Next(kwds, &pos, &key, &value)) break;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(key);
#endif
        }
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(value);
            Py_DECREF(key);
#endif
            key = NULL;
            value = NULL;
            continue;
        }
#if !CYTHON_AVOID_BORROWED_REFS
        Py_INCREF(key);
#endif
        Py_INCREF(value);
        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;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    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 = (
                #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;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    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;
        }
    }
    Py_XDECREF(key);
    Py_XDECREF(value);
    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:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    Py_XDECREF(key);
    Py_XDECREF(value);
    return -1;
}

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    __Pyx_TypeName obj_type_name;
    __Pyx_TypeName type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    type_name = __Pyx_PyType_GetName(type);
    PyErr_Format(PyExc_TypeError,
                 "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
                 obj_type_name, type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
}

/* RaiseUnexpectedTypeError */
static int
__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
{
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME,
                 expected, obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* GetAttr3 */
#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
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;
}
#endif
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    int res = PyObject_GetOptionalAttr(o, n, &r);
    return (res != 0) ? r : __Pyx_NewRef(d);
#else
  #if CYTHON_USE_TYPE_SLOTS
    if (likely(PyString_Check(n))) {
        r = __Pyx_PyObject_GetAttrStrNoError(o, n);
        if (unlikely(!r) && likely(!PyErr_Occurred())) {
            r = __Pyx_NewRef(d);
        }
        return r;
    }
  #endif
    r = PyObject_GetAttr(o, n);
    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
#endif
}

/* 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 && PY_VERSION_HEX < 0x030d0000
    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;
    }
#elif CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
#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);
}

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
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;
}
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_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
        return NULL;
    }
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
        return NULL;
    }
    #endif
    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

/* 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 PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    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

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
    self = __Pyx_CyOrPyCFunction_GET_SELF(func);
    #if PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    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

/* PyObjectFastCall */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result = 0;
    size_t i;
    argstuple = PyTuple_New((Py_ssize_t)nargs);
    if (unlikely(!argstuple)) return NULL;
    for (i = 0; i < nargs; i++) {
        Py_INCREF(args[i]);
        if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
  bad:
    Py_DECREF(argstuple);
    return result;
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
    Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
#if CYTHON_COMPILING_IN_CPYTHON
    if (nargs == 0 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
            return __Pyx_PyObject_CallMethO(func, NULL);
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
            return __Pyx_PyObject_CallMethO(func, args[0]);
    }
#endif
    #if PY_VERSION_HEX < 0x030800B1
    #if CYTHON_FAST_PYCCALL
    if (PyCFunction_Check(func)) {
        if (kwargs) {
            return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
        } else {
            return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
        }
    }
    #if PY_VERSION_HEX >= 0x030700A1
    if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
        return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
    }
    #endif
    #endif
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
    }
    #endif
    #endif
    if (kwargs == NULL) {
        #if CYTHON_VECTORCALL
        #if PY_VERSION_HEX < 0x03090000
        vectorcallfunc f = _PyVectorcall_Function(func);
        #else
        vectorcallfunc f = PyVectorcall_Function(func);
        #endif
        if (f) {
            return f(func, args, (size_t)nargs, NULL);
        }
        #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
        if (__Pyx_CyFunction_CheckExact(func)) {
            __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
            if (f) return f(func, args, (size_t)nargs, NULL);
        }
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
    }
    #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
    #else
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
    #endif
}

/* PyObjectCallOneArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *args[2] = {NULL, arg};
    return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    __Pyx_PyThreadState_declare
    CYTHON_UNUSED_VAR(cause);
    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 PY_VERSION_HEX >= 0x030C00A6
        PyException_SetTraceback(value, tb);
      #elif CYTHON_FAST_THREAD_STATE
        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);
        }
#else
        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);
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!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 {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_subscript) {
            PyObject *r, *key = PyInt_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return sm->sq_item(o, i);
        }
    }
#else
    if (is_list || !PyMapping_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 = NULL;
    Py_ssize_t key_value;
    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)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index));
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError,
            "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
        __Pyx_DECREF_TypeName(index_type_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
    __Pyx_TypeName obj_type_name;
    if (likely(PyType_Check(obj))) {
        PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem);
        if (!meth) {
            PyErr_Clear();
        } else {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
    PyTypeObject *tp = Py_TYPE(obj);
    PyMappingMethods *mm = tp->tp_as_mapping;
    PySequenceMethods *sm = tp->tp_as_sequence;
    if (likely(mm && mm->mp_subscript)) {
        return mm->mp_subscript(obj, key);
    }
    if (likely(sm && sm->sq_item)) {
        return __Pyx_PyObject_GetIndex(obj, key);
    }
    return __Pyx_PyObject_GetItem_Slow(obj, key);
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
#endif
    CYTHON_UNUSED_VAR(clineno);
    CYTHON_UNUSED_VAR(lineno);
    CYTHON_UNUSED_VAR(filename);
    CYTHON_MAYBE_UNUSED_VAR(nogil);
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(0);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* RaiseNoneIterError */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* PyObjectCallNoArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg[2] = {NULL, NULL};
    return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (unlikely(stop <= start))
        return __Pyx_NewRef(__pyx_empty_unicode);
    length = stop - start;
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* ArgTypeTest */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    __Pyx_TypeName type_name;
    __Pyx_TypeName obj_type_name;
    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;
    }
    type_name = __Pyx_PyType_GetName(type);
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
        ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* JoinPyUnicode */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind, kind_shift;
    Py_ssize_t i, char_pos;
    void *result_udata;
    CYTHON_MAYBE_UNUSED_VAR(max_char);
#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;
    kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1;
    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);
    kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1;
    result_udata = PyUnicode_AS_UNICODE(result_uval);
#endif
    assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
    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((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos))
            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 << kind_shift), udata, (size_t) (ulength << kind_shift));
        } else {
            #if PY_VERSION_HEX >= 0x030d0000
            if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad;
            #elif 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
    CYTHON_UNUSED_VAR(max_char);
    CYTHON_UNUSED_VAR(result_ulength);
    CYTHON_UNUSED_VAR(value_count);
    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
#endif
}

/* PyObjectLookupSpecial */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
#if PY_MAJOR_VERSION < 3
    if (unlikely(PyInstance_Check(obj)))
        return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name);
#endif
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else if (with_error) {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#endif

/* RaiseUnboundLocalError */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_value == NULL || exc_info->exc_value == 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 && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    PyObject *exc_value = exc_info->exc_value;
    if (exc_value == NULL || exc_value == Py_None) {
        *value = NULL;
        *type = NULL;
        *tb = NULL;
    } else {
        *value = exc_value;
        Py_INCREF(*value);
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        *tb = PyException_GetTraceback(exc_value);
    }
  #elif 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;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #endif
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    PyObject *tmp_value = exc_info->exc_value;
    exc_info->exc_value = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
  #else
    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
}
#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 = NULL, *local_value, *local_tb = NULL;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if PY_VERSION_HEX >= 0x030C00A6
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
  #else
    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;
  #endif
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
    if (unlikely(tstate->current_exception))
#elif 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;
      #if PY_VERSION_HEX >= 0x030B00a4
        tmp_value = exc_info->exc_value;
        exc_info->exc_value = local_value;
        tmp_type = NULL;
        tmp_tb = NULL;
        Py_XDECREF(local_type);
        Py_XDECREF(local_tb);
      #else
        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;
      #endif
    }
    #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;
}

/* 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

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(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 + (unsigned long)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
        if (unlikely(__Pyx_PyLong_IsZero(op1))) {
            return __Pyx_NewRef(op2);
        }
        if (likely(__Pyx_PyLong_IsCompact(op1))) {
            a = __Pyx_PyLong_CompactValue(op1);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op1);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
            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;
#if CYTHON_COMPILING_IN_LIMITED_API
        double a = __pyx_PyFloat_AsDouble(op1);
#else
        double a = PyFloat_AS_DOUBLE(op1);
#endif
            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

/* UnicodeAsUCS4 */
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
   Py_ssize_t length;
   #if CYTHON_PEP393_ENABLED
   length = PyUnicode_GET_LENGTH(x);
   if (likely(length == 1)) {
       return PyUnicode_READ_CHAR(x, 0);
   }
   #else
   length = PyUnicode_GET_SIZE(x);
   if (likely(length == 1)) {
       return PyUnicode_AS_UNICODE(x)[0];
   }
   #if Py_UNICODE_SIZE == 2
   else if (PyUnicode_GET_SIZE(x) == 2) {
       Py_UCS4 high_val = PyUnicode_AS_UNICODE(x)[0];
       if (high_val >= 0xD800 && high_val <= 0xDBFF) {
           Py_UCS4 low_val = PyUnicode_AS_UNICODE(x)[1];
           if (low_val >= 0xDC00 && low_val <= 0xDFFF) {
               return 0x10000 + (((high_val & ((1<<10)-1)) << 10) | (low_val & ((1<<10)-1)));
           }
       }
   }
   #endif
   #endif
   PyErr_Format(PyExc_ValueError,
                "only single character unicode strings can be converted to Py_UCS4, "
                "got length %" CYTHON_FORMAT_SSIZE_T "d", length);
   return (Py_UCS4)-1;
}

/* object_ord */
static long __Pyx__PyObject_Ord(PyObject* c) {
    Py_ssize_t size;
    if (PyBytes_Check(c)) {
        size = PyBytes_GET_SIZE(c);
        if (likely(size == 1)) {
            return (unsigned char) PyBytes_AS_STRING(c)[0];
        }
#if PY_MAJOR_VERSION < 3
    } else if (PyUnicode_Check(c)) {
        return (long)__Pyx_PyUnicode_AsPy_UCS4(c);
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    } else if (PyByteArray_Check(c)) {
        size = PyByteArray_GET_SIZE(c);
        if (likely(size == 1)) {
            return (unsigned char) PyByteArray_AS_STRING(c)[0];
        }
#endif
    } else {
        __Pyx_TypeName c_type_name = __Pyx_PyType_GetName(Py_TYPE(c));
        PyErr_Format(PyExc_TypeError,
            "ord() expected string of length 1, but " __Pyx_FMT_TYPENAME " found",
            c_type_name);
        __Pyx_DECREF_TypeName(c_type_name);
        return (long)(Py_UCS4)-1;
    }
    PyErr_Format(PyExc_TypeError,
        "ord() expected a character, but string of length %zd found", size);
    return (long)(Py_UCS4)-1;
}

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *empty_list = 0;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (unlikely(!py_import))
        goto bad;
    if (!from_list) {
        empty_list = PyList_New(0);
        if (unlikely(!empty_list))
            goto bad;
        from_list = empty_list;
    }
    #endif
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
                module = PyImport_ImportModuleLevelObject(
                    name, __pyx_d, empty_dict, from_list, 1);
                if (unlikely(!module)) {
                    if (unlikely(!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 (unlikely(!py_level))
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, __pyx_d, empty_dict, from_list, level);
            #endif
        }
    }
bad:
    Py_XDECREF(empty_dict);
    Py_XDECREF(empty_list);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    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)) {
        const char* module_name_str = 0;
        PyObject* module_name = 0;
        PyObject* module_dot = 0;
        PyObject* full_name = 0;
        PyErr_Clear();
        module_name_str = PyModule_GetName(module);
        if (unlikely(!module_name_str)) { goto modbad; }
        module_name = PyUnicode_FromString(module_name_str);
        if (unlikely(!module_name)) { goto modbad; }
        module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__6);
        if (unlikely(!module_dot)) { goto modbad; }
        full_name = PyUnicode_Concat(module_dot, name);
        if (unlikely(!full_name)) { goto modbad; }
        #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
        {
            PyObject *modules = PyImport_GetModuleDict();
            if (unlikely(!modules))
                goto modbad;
            value = PyObject_GetItem(modules, full_name);
        }
        #else
        value = PyImport_GetModule(full_name);
        #endif
      modbad:
        Py_XDECREF(full_name);
        Py_XDECREF(module_dot);
        Py_XDECREF(module_name);
    }
    if (unlikely(!value)) {
        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;
}

/* 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);
}

/* 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 (!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);
    traverseproc tp_traverse = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc) != current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_traverse = __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc)) == current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_traverse)
        return 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);
    inquiry tp_clear = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_clear, inquiry) != current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_clear = __Pyx_PyType_GetSlot(type, tp_clear, inquiry)) == current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_clear)
        tp_clear(obj);
}

/* FixUpExtensionType */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
#else
    const PyType_Slot *slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
        int changed = 0;
#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
        const
#endif
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
#if PY_VERSION_HEX < 0x030900b1
                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_weaklistoffset = memb->offset;
                    changed = 1;
                }
                else if (strcmp(memb->name, "__dictoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_dictoffset = memb->offset;
                    changed = 1;
                }
#if CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
#if PY_VERSION_HEX >= 0x030800b4
                    type->tp_vectorcall_offset = memb->offset;
#else
                    type->tp_print = (printfunc) memb->offset;
#endif
                    changed = 1;
                }
#endif
#else
                if ((0));
#endif
#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
                else if (strcmp(memb->name, "__module__") == 0) {
                    PyObject *descr;
                    assert(memb->type == T_OBJECT);
                    assert(memb->flags == 0 || memb->flags == READONLY);
                    descr = PyDescr_NewMember(type, memb);
                    if (unlikely(!descr))
                        return -1;
                    if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
                        Py_DECREF(descr);
                        return -1;
                    }
                    Py_DECREF(descr);
                    changed = 1;
                }
#endif
            }
            memb++;
        }
        if (changed)
            PyType_Modified(type);
    }
#endif
    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
    __Pyx_TypeName type_name;
    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 defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
        if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
#elif PY_MAJOR_VERSION >= 3
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || __Pyx_IS_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 (likely(descr != NULL)) {
        *method = descr;
        return 0;
    }
    type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    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;
}

/* ValidateBasesTuple */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
    Py_ssize_t i, n;
#if CYTHON_ASSUME_SAFE_MACROS
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (n < 0) return -1;
#endif
    for (i = 1; i < n; i++)
    {
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *b0 = PySequence_GetItem(bases, i);
        if (!b0) return -1;
#elif CYTHON_ASSUME_SAFE_MACROS
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *b0 = PyTuple_GetItem(bases, i);
        if (!b0) return -1;
#endif
        PyTypeObject *b;
#if PY_MAJOR_VERSION < 3
        if (PyClass_Check(b0))
        {
            PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
                         PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
#endif
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
            PyErr_Format(PyExc_TypeError,
                "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
            __Pyx_DECREF_TypeName(b_name);
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
        if (dictoffset == 0)
        {
            Py_ssize_t b_dictoffset = 0;
#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
            b_dictoffset = b->tp_dictoffset;
#else
            PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
            if (!py_b_dictoffset) goto dictoffset_return;
            b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
            Py_DECREF(py_b_dictoffset);
            if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
#endif
            if (b_dictoffset) {
                {
                    __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
                    PyErr_Format(PyExc_TypeError,
                        "extension type '%.200s' has no __dict__ slot, "
                        "but base type '" __Pyx_FMT_TYPENAME "' has: "
                        "either add 'cdef dict __dict__' to the extension type "
                        "or add '__slots__ = [...]' to the base type",
                        type_name, b_name);
                    __Pyx_DECREF_TypeName(b_name);
                }
#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
              dictoffset_return:
#endif
#if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(b0);
#endif
                return -1;
            }
        }
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(b0);
#endif
    }
    return 0;
}
#endif

/* PyType_Ready */
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
    (void)__Pyx_PyObject_CallMethod0;
#if CYTHON_USE_TYPE_SPECS
    (void)__Pyx_validate_bases_tuple;
#endif
    return PyType_Ready(t);
#else
    int r;
    PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
    if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
        return -1;
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
    {
        int gc_was_enabled;
    #if PY_VERSION_HEX >= 0x030A00b1
        gc_was_enabled = PyGC_Disable();
        (void)__Pyx_PyObject_CallMethod0;
    #else
        PyObject *ret, *py_status;
        PyObject *gc = NULL;
        #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
        gc = PyImport_GetModule(__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
        if (unlikely(!py_status)) {
            Py_DECREF(gc);
            return -1;
        }
        gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
        Py_DECREF(py_status);
        if (gc_was_enabled > 0) {
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
            if (unlikely(!ret)) {
                Py_DECREF(gc);
                return -1;
            }
            Py_DECREF(ret);
        } else if (unlikely(gc_was_enabled == -1)) {
            Py_DECREF(gc);
            return -1;
        }
    #endif
        t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
#if PY_VERSION_HEX >= 0x030A0000
        t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
#endif
#else
        (void)__Pyx_PyObject_CallMethod0;
#endif
    r = PyType_Ready(t);
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
        t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
    #if PY_VERSION_HEX >= 0x030A00b1
        if (gc_was_enabled)
            PyGC_Enable();
    #else
        if (gc_was_enabled) {
            PyObject *tp, *v, *tb;
            PyErr_Fetch(&tp, &v, &tb);
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
            if (likely(ret || r == -1)) {
                Py_XDECREF(ret);
                PyErr_Restore(tp, v, tb);
            } else {
                Py_XDECREF(tp);
                Py_XDECREF(v);
                Py_XDECREF(tb);
                r = -1;
            }
        }
        Py_DECREF(gc);
    #endif
    }
#endif
    return r;
#endif
}

/* PyObject_GenericGetAttrNoDict */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
    __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, attr_name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(attr_name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    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

/* SetVTable */
static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
    if (unlikely(!ob))
        goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* GetVTable */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
#endif
    if (!ob)
        goto bad;
    ptr = PyCapsule_GetPointer(ob, 0);
    if (!ptr && !PyErr_Occurred())
        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
    Py_DECREF(ob);
    return ptr;
bad:
    Py_XDECREF(ob);
    return NULL;
}

/* MergeVTables */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i;
    void** base_vtables;
    __Pyx_TypeName tp_base_name;
    __Pyx_TypeName base_name;
    void* unknown = (void*)-1;
    PyObject* bases = type->tp_bases;
    int base_depth = 0;
    {
        PyTypeObject* base = type->tp_base;
        while (base) {
            base_depth += 1;
            base = base->tp_base;
        }
    }
    base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
    for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
        void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = type->tp_base;
            for (j = 0; j < base_depth; j++) {
                if (base_vtables[j] == unknown) {
                    base_vtables[j] = __Pyx_GetVtable(base);
                    base_vtables[j + 1] = unknown;
                }
                if (base_vtables[j] == base_vtable) {
                    break;
                } else if (base_vtables[j] == NULL) {
                    goto bad;
                }
                base = base->tp_base;
            }
        }
    }
    PyErr_Clear();
    free(base_vtables);
    return 0;
bad:
    tp_base_name = __Pyx_PyType_GetName(type->tp_base);
    base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
    free(base_vtables);
    return -1;
}
#endif

/* SetupReduce */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStrNoError(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_getstate = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
    PyObject *getstate = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
#else
    getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
    if (!getstate && PyErr_Occurred()) {
        goto __PYX_BAD;
    }
#endif
    if (getstate) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
#else
        object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
        if (!object_getstate && PyErr_Occurred()) {
            goto __PYX_BAD;
        }
#endif
        if (object_getstate != getstate) {
            goto __PYX_GOOD;
        }
    }
#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_GetAttrStrNoError(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()) {
        __Pyx_TypeName type_obj_name =
            __Pyx_PyType_GetName((PyTypeObject*)type_obj);
        PyErr_Format(PyExc_RuntimeError,
            "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
        __Pyx_DECREF_TypeName(type_obj_name);
    }
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
    Py_XDECREF(object_getstate);
    Py_XDECREF(getstate);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}
#endif

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_0_11
#define __PYX_HAVE_RT_ImportType_3_0_11
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size)
{
    PyObject *result = 0;
    char warning[200];
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !CYTHON_COMPILING_IN_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* ImportDottedModule */
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
    PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
    if (unlikely(PyErr_Occurred())) {
        PyErr_Clear();
    }
    if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) {
        partial_name = name;
    } else {
        slice = PySequence_GetSlice(parts_tuple, 0, count);
        if (unlikely(!slice))
            goto bad;
        sep = PyUnicode_FromStringAndSize(".", 1);
        if (unlikely(!sep))
            goto bad;
        partial_name = PyUnicode_Join(sep, slice);
    }
    PyErr_Format(
#if PY_MAJOR_VERSION < 3
        PyExc_ImportError,
        "No module named '%s'", PyString_AS_STRING(partial_name));
#else
#if PY_VERSION_HEX >= 0x030600B1
        PyExc_ModuleNotFoundError,
#else
        PyExc_ImportError,
#endif
        "No module named '%U'", partial_name);
#endif
bad:
    Py_XDECREF(sep);
    Py_XDECREF(slice);
    Py_XDECREF(partial_name);
    return NULL;
}
#endif
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
    PyObject *imported_module;
#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
    PyObject *modules = PyImport_GetModuleDict();
    if (unlikely(!modules))
        return NULL;
    imported_module = __Pyx_PyDict_GetItemStr(modules, name);
    Py_XINCREF(imported_module);
#else
    imported_module = PyImport_GetModule(name);
#endif
    return imported_module;
}
#endif
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
    Py_ssize_t i, nparts;
    nparts = PyTuple_GET_SIZE(parts_tuple);
    for (i=1; i < nparts && module; i++) {
        PyObject *part, *submodule;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        part = PyTuple_GET_ITEM(parts_tuple, i);
#else
        part = PySequence_ITEM(parts_tuple, i);
#endif
        submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
        Py_DECREF(part);
#endif
        Py_DECREF(module);
        module = submodule;
    }
    if (unlikely(!module)) {
        return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
    }
    return module;
}
#endif
static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
#if PY_MAJOR_VERSION < 3
    PyObject *module, *from_list, *star = __pyx_n_s__20;
    CYTHON_UNUSED_VAR(parts_tuple);
    from_list = PyList_New(1);
    if (unlikely(!from_list))
        return NULL;
    Py_INCREF(star);
    PyList_SET_ITEM(from_list, 0, star);
    module = __Pyx_Import(name, from_list, 0);
    Py_DECREF(from_list);
    return module;
#else
    PyObject *imported_module;
    PyObject *module = __Pyx_Import(name, NULL, 0);
    if (!parts_tuple || unlikely(!module))
        return module;
    imported_module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(imported_module)) {
        Py_DECREF(module);
        return imported_module;
    }
    PyErr_Clear();
    return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
#endif
}
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1
    PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(module)) {
        PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec);
        if (likely(spec)) {
            PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing);
            if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
                Py_DECREF(spec);
                spec = NULL;
            }
            Py_XDECREF(unsafe);
        }
        if (likely(!spec)) {
            PyErr_Clear();
            return module;
        }
        Py_DECREF(spec);
        Py_DECREF(module);
    } else if (PyErr_Occurred()) {
        PyErr_Clear();
    }
#endif
    return __Pyx__ImportDottedModule(name, parts_tuple);
}

/* FetchSharedCythonModule */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
}

/* FetchCommonType */
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t basicsize,
                               Py_ssize_t expected_basicsize) {
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* abi_module;
    const char* object_name;
    PyTypeObject *cached_type = NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    object_name = strrchr(type->tp_name, '.');
    object_name = object_name ? object_name+1 : type->tp_name;
    cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        if (__Pyx_VerifyCachedType(
              (PyObject *)cached_type,
              object_name,
              cached_type->tp_basicsize,
              type->tp_basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    if (PyType_Ready(type) < 0) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
        goto bad;
    Py_INCREF(type);
    cached_type = type;
done:
    Py_DECREF(abi_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#else
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module, *cached_type = NULL;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    cached_type = PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        Py_ssize_t basicsize;
#if CYTHON_COMPILING_IN_LIMITED_API
        PyObject *py_basicsize;
        py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
        if (unlikely(!py_basicsize)) goto bad;
        basicsize = PyLong_AsSsize_t(py_basicsize);
        Py_DECREF(py_basicsize);
        py_basicsize = 0;
        if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
#else
        basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
#endif
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              basicsize,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    CYTHON_UNUSED_VAR(module);
    cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
    if (unlikely(!cached_type)) goto bad;
    if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
done:
    Py_DECREF(abi_module);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#endif

/* PyVectorcallFastCallDict */
#if CYTHON_METH_FASTCALL
static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    PyObject *res = NULL;
    PyObject *kwnames;
    PyObject **newargs;
    PyObject **kwvalues;
    Py_ssize_t i, pos;
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
    if (unlikely(newargs == NULL)) {
        PyErr_NoMemory();
        return NULL;
    }
    for (j = 0; j < nargs; j++) newargs[j] = args[j];
    kwnames = PyTuple_New(nkw);
    if (unlikely(kwnames == NULL)) {
        PyMem_Free(newargs);
        return NULL;
    }
    kwvalues = newargs + nargs;
    pos = i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (PyDict_Next(kw, &pos, &key, &value)) {
        keys_are_strings &= Py_TYPE(key)->tp_flags;
        Py_INCREF(key);
        Py_INCREF(value);
        PyTuple_SET_ITEM(kwnames, i, key);
        kwvalues[i] = value;
        i++;
    }
    if (unlikely(!keys_are_strings)) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        goto cleanup;
    }
    res = vc(func, newargs, nargs, kwnames);
cleanup:
    Py_DECREF(kwnames);
    for (i = 0; i < nkw; i++)
        Py_DECREF(kwvalues[i]);
    PyMem_Free(newargs);
    return res;
}
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
        return vc(func, args, nargs, NULL);
    }
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    if (__Pyx_CyFunction_Check(func)) {
        return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
    } else if (PyCFunction_Check(func)) {
        return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
    }
    return 0;
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
}
#endif
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    __Pyx_Py_XDECREF_SET(
        __Pyx_CyFunction_GetClassObj(f),
            ((classobj) ? __Pyx_NewRef(classobj) : NULL));
#else
    __Pyx_Py_XDECREF_SET(
        ((PyCMethodObject *) (f))->mm_class,
        (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
}
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
{
    CYTHON_UNUSED_VAR(closure);
    if (unlikely(op->func_doc == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
        if (unlikely(!op->func_doc)) return NULL;
#else
        if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
#endif
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_name == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#elif PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#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;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#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;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_dict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(op);
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_tuple;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_kwdict;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value || value == Py_None) {
        value = NULL;
    } else if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->func_annotations;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    int is_coroutine;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
#if PY_VERSION_HEX >= 0x03050000
    if (is_coroutine) {
        PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
        fromlist = PyList_New(1);
        if (unlikely(!fromlist)) return NULL;
        Py_INCREF(marker);
#if CYTHON_ASSUME_SAFE_MACROS
        PyList_SET_ITEM(fromlist, 0, marker);
#else
        if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
            Py_DECREF(marker);
            Py_DECREF(fromlist);
            return NULL;
        }
#endif
        module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(op->func_is_coroutine)) {
            return __Pyx_NewRef(op->func_is_coroutine);
        }
ignore:
        PyErr_Clear();
    }
#endif
    op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
    return __Pyx_NewRef(op->func_is_coroutine);
}
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *
__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_GetAttrString(op->func, "__module__");
}
static int
__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_SetAttrString(op->func, "__module__", value);
}
#endif
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
#if CYTHON_USE_TYPE_SPECS
    {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#if CYTHON_METH_FASTCALL
#if CYTHON_BACKPORT_VECTORCALL
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#endif
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
#endif
#endif
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
{
    CYTHON_UNUSED_VAR(args);
#if PY_MAJOR_VERSION >= 3
    Py_INCREF(m->func_qualname);
    return m->func_qualname;
#else
    return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
#endif
    if (unlikely(op == NULL))
        return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
    if (unlikely(!op->func)) return NULL;
#endif
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
#if !CYTHON_COMPILING_IN_LIMITED_API
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
#endif
    Py_XINCREF(closure);
    op->func_closure = closure;
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_XINCREF(module);
    cf->m_module = module;
#endif
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_classobj = NULL;
#else
    ((PyCMethodObject*)op)->mm_class = NULL;
#endif
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults_size = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    op->func_is_coroutine = NULL;
#if CYTHON_METH_FASTCALL
    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
    case METH_NOARGS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
        break;
    case METH_O:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
        break;
    case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
        break;
    case METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
        break;
    case METH_VARARGS | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = NULL;
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        Py_DECREF(op);
        return NULL;
    }
#endif
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func);
#else
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
#if PY_VERSION_HEX < 0x030900B1
    Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
    {
        PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
        ((PyCMethodObject *) (m))->mm_class = NULL;
        Py_XDECREF(cls);
    }
#endif
#endif
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    Py_CLEAR(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    __Pyx_PyHeapTypeObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
#endif
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    Py_VISIT(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
    PyObject *py_name = NULL;
    PyCFunction meth;
    int flags;
    meth = PyCFunction_GetFunction(f);
    if (unlikely(!meth)) return NULL;
    flags = PyCFunction_GetFlags(f);
    if (unlikely(flags < 0)) return NULL;
#else
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    int flags = f->m_ml->ml_flags;
#endif
    Py_ssize_t size;
    switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 0))
                return (*meth)(self, NULL);
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
    if (!py_name) return NULL;
    PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
                 py_name);
    Py_DECREF(py_name);
#else
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
#endif
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *self, *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
    if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
    self = ((PyCFunctionObject*)func)->m_self;
#endif
    result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
    return result;
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
#if CYTHON_METH_FASTCALL
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS
        return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
#else
        (void) &__Pyx_PyVectorcall_FastCallDict;
        return PyVectorcall_Call(func, args, kw);
#endif
    }
#endif
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
#if CYTHON_ASSUME_SAFE_MACROS
        argc = PyTuple_GET_SIZE(args);
#else
        argc = PyTuple_Size(args);
        if (unlikely(!argc) < 0) return NULL;
#endif
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
#if PY_MAJOR_VERSION > 2
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
#else
            PyErr_SetString(PyExc_TypeError,
                            "unbound method needs an argument");
#endif
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
{
    int ret = 0;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        if (unlikely(nargs < 1)) {
            PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
                         ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
        PyErr_Format(PyExc_TypeError,
                     "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
        return -1;
    }
    return ret;
}
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, NULL);
}
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, args[0]);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
}
#endif
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_CyFunctionType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
    {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
    {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
    {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
    {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
    {Py_tp_methods, (void *)__pyx_CyFunction_methods},
    {Py_tp_members, (void *)__pyx_CyFunction_members},
    {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
    {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
    {0, 0},
};
static PyType_Spec __pyx_CyFunctionType_spec = {
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
#else
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
#if !CYTHON_METH_FASTCALL
    0,
#elif CYTHON_BACKPORT_VECTORCALL
    (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
#else
    offsetof(PyCFunctionObject, vectorcall),
#endif
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_PyMethod_New,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
    0,
#endif
#if __PYX_NEED_TP_PRINT_SLOT
    0,
#endif
#if PY_VERSION_HEX >= 0x030C0000
    0,
#endif
#if PY_VERSION_HEX >= 0x030d00A4
    0,
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
    0,
#endif
};
#endif
static int __pyx_CyFunction_init(PyObject *module) {
#if CYTHON_USE_TYPE_SPECS
    __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
#else
    CYTHON_UNUSED_VAR(module);
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
#endif
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    m->defaults_size = size;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    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_GetAttrStrNoError(__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 */
#if !CYTHON_COMPILING_IN_LIMITED_API
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);
}
#endif

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
                                                       PyObject *firstlineno, PyObject *name) {
    PyObject *replace = NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
    replace = PyObject_GetAttrString(code, "replace");
    if (likely(replace)) {
        PyObject *result;
        result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    #if __PYX_LIMITED_VERSION_HEX < 0x030780000
    {
        PyObject *compiled = NULL, *result = NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
        compiled = Py_CompileString(
            "out = type(code)(\n"
            "  code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
            "  code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
            "  code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
            "  code.co_lnotab)\n", "<dummy>", Py_file_input);
        if (!compiled) return NULL;
        result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
        Py_DECREF(compiled);
        if (!result) PyErr_Print();
        Py_DECREF(result);
        result = PyDict_GetItemString(scratch_dict, "out");
        if (result) Py_INCREF(result);
        return result;
    }
    #else
    return NULL;
    #endif
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
    PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
    PyObject *exc_type, *exc_value, *exc_traceback;
    int success = 0;
    if (c_line) {
        (void) __pyx_cfilenm;
        (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
    if (unlikely(!code_object)) goto bad;
    py_py_line = PyLong_FromLong(py_line);
    if (unlikely(!py_py_line)) goto bad;
    py_funcname = PyUnicode_FromString(funcname);
    if (unlikely(!py_funcname)) goto bad;
    dict = PyDict_New();
    if (unlikely(!dict)) goto bad;
    {
        PyObject *old_code_object = code_object;
        code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
        Py_DECREF(old_code_object);
    }
    if (unlikely(!code_object)) goto bad;
    getframe = PySys_GetObject("_getframe");
    if (unlikely(!getframe)) goto bad;
    if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
    frame = PyEval_EvalCode(code_object, dict, dict);
    if (unlikely(!frame) || frame == Py_None) goto bad;
    success = 1;
  bad:
    PyErr_Restore(exc_type, exc_value, exc_traceback);
    Py_XDECREF(code_object);
    Py_XDECREF(py_py_line);
    Py_XDECREF(py_funcname);
    Py_XDECREF(dict);
    Py_XDECREF(replace);
    if (success) {
        PyTraceBack_Here(
            (struct _frame*)frame);
    }
    Py_XDECREF(frame);
}
#else
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,
        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);
    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;
    PyObject *ptype, *pvalue, *ptraceback;
    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) {
        __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) {
            /* If the code object creation fails, then we should clear the
               fetched exception references and propagate the new exception */
            Py_XDECREF(ptype);
            Py_XDECREF(pvalue);
            Py_XDECREF(ptraceback);
            goto bad;
        }
        __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
        __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);
}
#endif

/* 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;\
    }

/* 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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                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 && PY_VERSION_HEX < 0x030C00A7
        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
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                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
        }
    }
    {
        int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (int) -1;
        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;
}

/* CIntFromPy */
static CYTHON_INLINE gcg::USERGIVEN __Pyx_PyInt_As_gcg_3a__3a_USERGIVEN(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::USERGIVEN neg_one = (gcg::USERGIVEN) -1, const_zero = (gcg::USERGIVEN) 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(gcg::USERGIVEN) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (gcg::USERGIVEN) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        gcg::USERGIVEN val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (gcg::USERGIVEN) -1;
        val = __Pyx_PyInt_As_gcg_3a__3a_USERGIVEN(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(gcg::USERGIVEN) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) >= 2 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((((gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::USERGIVEN) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) >= 3 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((((((gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::USERGIVEN) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, 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(gcg::USERGIVEN) >= 4 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((((((((gcg::USERGIVEN)digits[3]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (gcg::USERGIVEN) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(gcg::USERGIVEN) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::USERGIVEN, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::USERGIVEN) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::USERGIVEN, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(gcg::USERGIVEN) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((gcg::USERGIVEN)-1)*(((((gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(gcg::USERGIVEN) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) ((((((gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(gcg::USERGIVEN) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((gcg::USERGIVEN)-1)*(((((((gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::USERGIVEN) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::USERGIVEN) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) ((((((((gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(gcg::USERGIVEN) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, 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(gcg::USERGIVEN) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) (((gcg::USERGIVEN)-1)*(((((((((gcg::USERGIVEN)digits[3]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::USERGIVEN) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::USERGIVEN, 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(gcg::USERGIVEN) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::USERGIVEN) ((((((((((gcg::USERGIVEN)digits[3]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[2]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[1]) << PyLong_SHIFT) | (gcg::USERGIVEN)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(gcg::USERGIVEN) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::USERGIVEN, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::USERGIVEN) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::USERGIVEN, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        gcg::USERGIVEN val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyErr_SetString(PyExc_RuntimeError,
                        "_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
        val = (gcg::USERGIVEN) -1;
#endif
        if (unlikely(ret))
            return (gcg::USERGIVEN) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to gcg::USERGIVEN");
    return (gcg::USERGIVEN) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to gcg::USERGIVEN");
    return (gcg::USERGIVEN) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_USERGIVEN(gcg::USERGIVEN value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::USERGIVEN neg_one = (gcg::USERGIVEN) -1, const_zero = (gcg::USERGIVEN) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(gcg::USERGIVEN) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(gcg::USERGIVEN) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::USERGIVEN) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(gcg::USERGIVEN) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::USERGIVEN) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(gcg::USERGIVEN),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(gcg::USERGIVEN));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GCG_PRICINGSTATUS(GCG_PRICINGSTATUS value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const GCG_PRICINGSTATUS neg_one = (GCG_PRICINGSTATUS) -1, const_zero = (GCG_PRICINGSTATUS) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(GCG_PRICINGSTATUS) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(GCG_PRICINGSTATUS) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(GCG_PRICINGSTATUS) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(GCG_PRICINGSTATUS) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(GCG_PRICINGSTATUS) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(GCG_PRICINGSTATUS),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(GCG_PRICINGSTATUS));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_VAR_DECOMPINFO(gcg::VAR_DECOMPINFO value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::VAR_DECOMPINFO neg_one = (gcg::VAR_DECOMPINFO) -1, const_zero = (gcg::VAR_DECOMPINFO) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(gcg::VAR_DECOMPINFO) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(gcg::VAR_DECOMPINFO) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::VAR_DECOMPINFO) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(gcg::VAR_DECOMPINFO) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::VAR_DECOMPINFO) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(gcg::VAR_DECOMPINFO),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(gcg::VAR_DECOMPINFO));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_gcg_3a__3a_CONS_DECOMPINFO(gcg::CONS_DECOMPINFO value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::CONS_DECOMPINFO neg_one = (gcg::CONS_DECOMPINFO) -1, const_zero = (gcg::CONS_DECOMPINFO) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(gcg::CONS_DECOMPINFO) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(gcg::CONS_DECOMPINFO) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::CONS_DECOMPINFO) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(gcg::CONS_DECOMPINFO) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(gcg::CONS_DECOMPINFO) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(gcg::CONS_DECOMPINFO),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(gcg::CONS_DECOMPINFO));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                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 && PY_VERSION_HEX < 0x030C00A7
        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
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                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
        }
    }
    {
        long val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (long) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((long) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (long) -1;
        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;
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 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(size_t) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) >= 4 * PyLong_SHIFT)) {
                            return (size_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
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (size_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(size_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((((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(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_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
        if ((sizeof(size_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        size_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (size_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (size_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (size_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (size_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((size_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((size_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (size_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_RESULT(SCIP_RESULT value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const SCIP_RESULT neg_one = (SCIP_RESULT) -1, const_zero = (SCIP_RESULT) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(SCIP_RESULT) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(SCIP_RESULT) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_RESULT) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(SCIP_RESULT) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_RESULT) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(SCIP_RESULT),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(SCIP_RESULT));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE SCIP_RESULT __Pyx_PyInt_As_SCIP_RESULT(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const SCIP_RESULT neg_one = (SCIP_RESULT) -1, const_zero = (SCIP_RESULT) 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(SCIP_RESULT) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (SCIP_RESULT) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        SCIP_RESULT val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (SCIP_RESULT) -1;
        val = __Pyx_PyInt_As_SCIP_RESULT(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(SCIP_RESULT) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) >= 2 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((((SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(SCIP_RESULT) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) >= 3 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((((((SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(SCIP_RESULT) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, 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(SCIP_RESULT) >= 4 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((((((((SCIP_RESULT)digits[3]) << PyLong_SHIFT) | (SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (SCIP_RESULT) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(SCIP_RESULT) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_RESULT, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(SCIP_RESULT) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_RESULT, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(SCIP_RESULT) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) - 1 > 2 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((SCIP_RESULT)-1)*(((((SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(SCIP_RESULT) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) - 1 > 2 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) ((((((SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(SCIP_RESULT) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) - 1 > 3 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((SCIP_RESULT)-1)*(((((((SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(SCIP_RESULT) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_RESULT) - 1 > 3 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) ((((((((SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(SCIP_RESULT) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, 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(SCIP_RESULT) - 1 > 4 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) (((SCIP_RESULT)-1)*(((((((((SCIP_RESULT)digits[3]) << PyLong_SHIFT) | (SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(SCIP_RESULT) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_RESULT, 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(SCIP_RESULT) - 1 > 4 * PyLong_SHIFT)) {
                            return (SCIP_RESULT) ((((((((((SCIP_RESULT)digits[3]) << PyLong_SHIFT) | (SCIP_RESULT)digits[2]) << PyLong_SHIFT) | (SCIP_RESULT)digits[1]) << PyLong_SHIFT) | (SCIP_RESULT)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(SCIP_RESULT) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_RESULT, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(SCIP_RESULT) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_RESULT, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        SCIP_RESULT val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (SCIP_RESULT) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (SCIP_RESULT) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (SCIP_RESULT) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (SCIP_RESULT) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(SCIP_RESULT) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((SCIP_RESULT) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(SCIP_RESULT) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((SCIP_RESULT) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((SCIP_RESULT) 1) << (sizeof(SCIP_RESULT) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (SCIP_RESULT) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to SCIP_RESULT");
    return (SCIP_RESULT) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to SCIP_RESULT");
    return (SCIP_RESULT) -1;
}

/* CIntFromPy */
static CYTHON_INLINE GCG_PRICINGSTATUS __Pyx_PyInt_As_GCG_PRICINGSTATUS(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const GCG_PRICINGSTATUS neg_one = (GCG_PRICINGSTATUS) -1, const_zero = (GCG_PRICINGSTATUS) 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(GCG_PRICINGSTATUS) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (GCG_PRICINGSTATUS) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        GCG_PRICINGSTATUS val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (GCG_PRICINGSTATUS) -1;
        val = __Pyx_PyInt_As_GCG_PRICINGSTATUS(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) >= 2 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((((GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) >= 3 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((((((GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, 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(GCG_PRICINGSTATUS) >= 4 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((((((((GCG_PRICINGSTATUS)digits[3]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (GCG_PRICINGSTATUS) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(GCG_PRICINGSTATUS) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(GCG_PRICINGSTATUS, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(GCG_PRICINGSTATUS) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(GCG_PRICINGSTATUS, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 2 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((GCG_PRICINGSTATUS)-1)*(((((GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 2 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) ((((((GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 3 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((GCG_PRICINGSTATUS)-1)*(((((((GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 3 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) ((((((((GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, 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(GCG_PRICINGSTATUS) - 1 > 4 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) (((GCG_PRICINGSTATUS)-1)*(((((((((GCG_PRICINGSTATUS)digits[3]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(GCG_PRICINGSTATUS) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(GCG_PRICINGSTATUS, 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(GCG_PRICINGSTATUS) - 1 > 4 * PyLong_SHIFT)) {
                            return (GCG_PRICINGSTATUS) ((((((((((GCG_PRICINGSTATUS)digits[3]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[2]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[1]) << PyLong_SHIFT) | (GCG_PRICINGSTATUS)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(GCG_PRICINGSTATUS) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(GCG_PRICINGSTATUS, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(GCG_PRICINGSTATUS) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(GCG_PRICINGSTATUS, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        GCG_PRICINGSTATUS val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyErr_SetString(PyExc_RuntimeError,
                        "_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
        val = (GCG_PRICINGSTATUS) -1;
#endif
        if (unlikely(ret))
            return (GCG_PRICINGSTATUS) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to GCG_PRICINGSTATUS");
    return (GCG_PRICINGSTATUS) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to GCG_PRICINGSTATUS");
    return (GCG_PRICINGSTATUS) -1;
}

/* CIntFromPy */
static CYTHON_INLINE gcg::CONS_DECOMPINFO __Pyx_PyInt_As_gcg_3a__3a_CONS_DECOMPINFO(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::CONS_DECOMPINFO neg_one = (gcg::CONS_DECOMPINFO) -1, const_zero = (gcg::CONS_DECOMPINFO) 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(gcg::CONS_DECOMPINFO) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (gcg::CONS_DECOMPINFO) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        gcg::CONS_DECOMPINFO val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (gcg::CONS_DECOMPINFO) -1;
        val = __Pyx_PyInt_As_gcg_3a__3a_CONS_DECOMPINFO(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) >= 2 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((((gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) >= 3 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((((((gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, 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(gcg::CONS_DECOMPINFO) >= 4 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((((((((gcg::CONS_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (gcg::CONS_DECOMPINFO) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(gcg::CONS_DECOMPINFO) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::CONS_DECOMPINFO, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::CONS_DECOMPINFO) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::CONS_DECOMPINFO, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((gcg::CONS_DECOMPINFO)-1)*(((((gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) ((((((gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((gcg::CONS_DECOMPINFO)-1)*(((((((gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) ((((((((gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, 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(gcg::CONS_DECOMPINFO) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) (((gcg::CONS_DECOMPINFO)-1)*(((((((((gcg::CONS_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::CONS_DECOMPINFO) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::CONS_DECOMPINFO, 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(gcg::CONS_DECOMPINFO) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::CONS_DECOMPINFO) ((((((((((gcg::CONS_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::CONS_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(gcg::CONS_DECOMPINFO) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::CONS_DECOMPINFO, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::CONS_DECOMPINFO) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::CONS_DECOMPINFO, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        gcg::CONS_DECOMPINFO val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyErr_SetString(PyExc_RuntimeError,
                        "_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
        val = (gcg::CONS_DECOMPINFO) -1;
#endif
        if (unlikely(ret))
            return (gcg::CONS_DECOMPINFO) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to gcg::CONS_DECOMPINFO");
    return (gcg::CONS_DECOMPINFO) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to gcg::CONS_DECOMPINFO");
    return (gcg::CONS_DECOMPINFO) -1;
}

/* CIntFromPy */
static CYTHON_INLINE gcg::VAR_DECOMPINFO __Pyx_PyInt_As_gcg_3a__3a_VAR_DECOMPINFO(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const gcg::VAR_DECOMPINFO neg_one = (gcg::VAR_DECOMPINFO) -1, const_zero = (gcg::VAR_DECOMPINFO) 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(gcg::VAR_DECOMPINFO) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (gcg::VAR_DECOMPINFO) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        gcg::VAR_DECOMPINFO val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (gcg::VAR_DECOMPINFO) -1;
        val = __Pyx_PyInt_As_gcg_3a__3a_VAR_DECOMPINFO(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) >= 2 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((((gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) >= 3 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((((((gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, 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(gcg::VAR_DECOMPINFO) >= 4 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((((((((gcg::VAR_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (gcg::VAR_DECOMPINFO) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(gcg::VAR_DECOMPINFO) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::VAR_DECOMPINFO, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::VAR_DECOMPINFO) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::VAR_DECOMPINFO, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((gcg::VAR_DECOMPINFO)-1)*(((((gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) ((((((gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((gcg::VAR_DECOMPINFO)-1)*(((((((gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) ((((((((gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, 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(gcg::VAR_DECOMPINFO) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) (((gcg::VAR_DECOMPINFO)-1)*(((((((((gcg::VAR_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(gcg::VAR_DECOMPINFO) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(gcg::VAR_DECOMPINFO, 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(gcg::VAR_DECOMPINFO) - 1 > 4 * PyLong_SHIFT)) {
                            return (gcg::VAR_DECOMPINFO) ((((((((((gcg::VAR_DECOMPINFO)digits[3]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[2]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[1]) << PyLong_SHIFT) | (gcg::VAR_DECOMPINFO)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(gcg::VAR_DECOMPINFO) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::VAR_DECOMPINFO, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(gcg::VAR_DECOMPINFO) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(gcg::VAR_DECOMPINFO, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        gcg::VAR_DECOMPINFO val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyErr_SetString(PyExc_RuntimeError,
                        "_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
        val = (gcg::VAR_DECOMPINFO) -1;
#endif
        if (unlikely(ret))
            return (gcg::VAR_DECOMPINFO) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to gcg::VAR_DECOMPINFO");
    return (gcg::VAR_DECOMPINFO) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to gcg::VAR_DECOMPINFO");
    return (gcg::VAR_DECOMPINFO) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned 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(unsigned long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned 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(unsigned int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_RETCODE(SCIP_RETCODE value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const SCIP_RETCODE neg_one = (SCIP_RETCODE) -1, const_zero = (SCIP_RETCODE) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(SCIP_RETCODE) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(SCIP_RETCODE) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_RETCODE) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(SCIP_RETCODE) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_RETCODE) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(SCIP_RETCODE),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(SCIP_RETCODE));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_SCIP_STAGE(SCIP_STAGE value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const SCIP_STAGE neg_one = (SCIP_STAGE) -1, const_zero = (SCIP_STAGE) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(SCIP_STAGE) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(SCIP_STAGE) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_STAGE) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(SCIP_STAGE) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(SCIP_STAGE) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(SCIP_STAGE),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(SCIP_STAGE));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE SCIP_PARAMSETTING __Pyx_PyInt_As_SCIP_PARAMSETTING(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const SCIP_PARAMSETTING neg_one = (SCIP_PARAMSETTING) -1, const_zero = (SCIP_PARAMSETTING) 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(SCIP_PARAMSETTING) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (SCIP_PARAMSETTING) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        SCIP_PARAMSETTING val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (SCIP_PARAMSETTING) -1;
        val = __Pyx_PyInt_As_SCIP_PARAMSETTING(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) >= 2 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((((SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) >= 3 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((((((SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, 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(SCIP_PARAMSETTING) >= 4 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((((((((SCIP_PARAMSETTING)digits[3]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (SCIP_PARAMSETTING) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(SCIP_PARAMSETTING) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_PARAMSETTING, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(SCIP_PARAMSETTING) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_PARAMSETTING, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 2 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((SCIP_PARAMSETTING)-1)*(((((SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 2 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) ((((((SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 3 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((SCIP_PARAMSETTING)-1)*(((((((SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 3 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) ((((((((SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(SCIP_PARAMSETTING) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, 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(SCIP_PARAMSETTING) - 1 > 4 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) (((SCIP_PARAMSETTING)-1)*(((((((((SCIP_PARAMSETTING)digits[3]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(SCIP_PARAMSETTING) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(SCIP_PARAMSETTING, 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(SCIP_PARAMSETTING) - 1 > 4 * PyLong_SHIFT)) {
                            return (SCIP_PARAMSETTING) ((((((((((SCIP_PARAMSETTING)digits[3]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[2]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[1]) << PyLong_SHIFT) | (SCIP_PARAMSETTING)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(SCIP_PARAMSETTING) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_PARAMSETTING, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(SCIP_PARAMSETTING) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(SCIP_PARAMSETTING, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        SCIP_PARAMSETTING val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (SCIP_PARAMSETTING) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (SCIP_PARAMSETTING) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (SCIP_PARAMSETTING) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (SCIP_PARAMSETTING) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(SCIP_PARAMSETTING) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((SCIP_PARAMSETTING) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(SCIP_PARAMSETTING) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((SCIP_PARAMSETTING) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((SCIP_PARAMSETTING) 1) << (sizeof(SCIP_PARAMSETTING) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (SCIP_PARAMSETTING) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to SCIP_PARAMSETTING");
    return (SCIP_PARAMSETTING) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to SCIP_PARAMSETTING");
    return (SCIP_PARAMSETTING) -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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API
static __Pyx_TypeName
__Pyx_PyType_GetName(PyTypeObject* tp)
{
    PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_n_s_name_2);
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
        PyErr_Clear();
        Py_XDECREF(name);
        name = __Pyx_NewRef(__pyx_n_s__515);
    }
    return name;
}
#endif

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
        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);
}
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (cls == a || cls == b) return 1;
    mro = cls->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            PyObject *base = PyTuple_GET_ITEM(mro, i);
            if (base == (PyObject *)a || base == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, 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) {
    if (exc_type1) {
        return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
    } else {
        return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
}
#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

/* CheckBinaryVersion */
static unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
    return Py_Version & ~0xFFUL;
#else
    const char* rt_version = Py_GetVersion();
    unsigned long version = 0;
    unsigned long factor = 0x01000000UL;
    unsigned int digit = 0;
    int i = 0;
    while (factor) {
        while ('0' <= rt_version[i] && rt_version[i] <= '9') {
            digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
            ++i;
        }
        version += factor * digit;
        if (rt_version[i] != '.')
            break;
        digit = 0;
        factor >>= 8;
        ++i;
    }
    return version;
#endif
}
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
    const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
    if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
        return 0;
    if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
        return 1;
    {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compile time Python version %d.%d "
                      "of module '%.100s' "
                      "%s "
                      "runtime version %d.%d",
                       (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
                       __Pyx_MODULE_NAME,
                       (allow_newer) ? "was newer than" : "does not match",
                       (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
       );
        return PyErr_WarnEx(NULL, message, 1);
    }
}

/* InitStrings */
#if PY_MAJOR_VERSION >= 3
static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
    if (t.is_unicode | t.is_str) {
        if (t.intern) {
            *str = PyUnicode_InternFromString(t.s);
        } else if (t.encoding) {
            *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
        } else {
            *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
        }
    } else {
        *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
    }
    if (!*str)
        return -1;
    if (PyObject_Hash(*str) == -1)
        return -1;
    return 0;
}
#endif
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION >= 3
        __Pyx_InitString(*t, t->p);
        #else
        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);
        }
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        #endif
        ++t;
    }
    return 0;
}

#include <string.h>
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
    size_t len = strlen(s);
    if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
        PyErr_SetString(PyExc_OverflowError, "byte string is too long");
        return -1;
    }
    return (Py_ssize_t) len;
}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return PyByteArray_FromStringAndSize(c_str, len);
}
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 && !CYTHON_COMPILING_IN_LIMITED_API) || (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) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
                "The ability to return an instance of a strict subclass of int is deprecated, "
                "and may be removed in a future version of Python.",
                result_type_name)) {
            __Pyx_DECREF_TypeName(result_type_name);
            Py_DECREF(result);
            return NULL;
        }
        __Pyx_DECREF_TypeName(result_type_name);
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
                 type_name, type_name, result_type_name);
    __Pyx_DECREF_TypeName(result_type_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
    if (likely(__Pyx_PyLong_IsCompact(b))) {
        return __Pyx_PyLong_CompactValue(b);
    } else {
      const digit* digits = __Pyx_PyLong_Digits(b);
      const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
      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);
}


/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
